From: "trans (Thomas Sawyer)" Date: 2012-11-12T00:01:06+09:00 Subject: [ruby-core:49222] [ruby-trunk - Feature #7328] Move ** operator precedence under unary + and - Issue #7328 has been updated by trans (Thomas Sawyer). "In mathematics you would put parentheses in (-a)^n. For example: -e^x is ... well ... -(e^x)." I think that's the opposite of what's generally expected. Currently Ruby does: -2**2 #=> -4 but commonly it would be: -2**2 #=> 4 It's curious how Ruby got the operator precedence it has. Clearly it is based on C, which most languages seem to mimic without much consideration. Yet Ruby stuck `**` way up top. I wonder why? ---------------------------------------- Feature #7328: Move ** operator precedence under unary + and - https://bugs.ruby-lang.org/issues/7328#change-32779 Author: boris_stitnicky (Boris Stitnicky) Status: Open Priority: Normal Assignee: Category: Target version: I would like to ask to consider decreasing ** operator precedence just below that of -/+ unary operators. I know that other languages (eg. Python) have ** operator bind tighter than negation, but seeing -1 ** 0.5 give the result -1 and having to type parenthesis (-1) ** 0.5... Even if it's not worth changing, I'd like to hear this rationalized. I've asked about rationalization of this on SO, and nobody seems to know why this precedence is the way it is. -- http://bugs.ruby-lang.org/