Exponentiation operator precedence
alex at weej.com
Thu Aug 27 18:58:27 UTC 2015
Ethan is making my point far better than I did, and I agree completely
about the issue of unary operators visually appearing more tightly bound
than binary operators.
At this point it seems fair to at least acknowledge the prospect of
-x**2 === -(x ** 2)
-x ** 2 === (-x) ** 2
On Thursday, August 27, 2015, Steve Fink <sphink at gmail.com> wrote:
> On 08/27/2015 11:20 AM, Ethan Resnick wrote:
>> Long-time esdiscuss lurker; hopefully this perspective is helpful.
>> I think the problem here is that traditional mathematic notation uses
>> visual cues to imply precedence that JS can't take advantage of. When -3 **
>> 2 is written out on paper, the 2 is very clearly grouped visually with the
>> 3. In fact, the superscript almost makes the 2 feel like an appendage of
>> the 3. That makes it more natural to read it as two items: the negative
>> sign, and (3 ** 2).
>> By contrast, when (-3 ** 2) is written out in code, the negative sign is
>> way closer visually to the 3 than the 2 is, so I find myself instinctively
>> pulling out a "-3" first and reading the expression as (-3)**2.
> If we're making ** bind tighter than unary -, then I would hope it would
> be written -3**2, not -3 ** 2. The latter is indeed deceptive.
> For me, x**y**z is rare enough that I don't really care if ** is right
> associative or nonassociative. Parentheses are part of the cost you have to
> pay for rendering things as plain text -- and yet, I see no reason not to
> make x**y**z just do the right thing.
> es-discuss mailing list
> es-discuss at mozilla.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss