> Le 24 sept. 2015 à 16:11, Brendan Eich <bren...@mozilla.org> a écrit :
> 
> And indeed apart from dot (a special form whose right operand must be a 
> lexical identifier-name) and square brackets (which isn't an infix operator 
> per se), unary operators bind tighter than binary in JS as in C and other 
> C-derived languages.

I just wonder why it is important that unary binds tighter? For instance, 
before I carefully studied the issue of this thread, I have never expected that 
unary minus binds tighter than binary multiplication operator in expressions 
like `-2*x` (although it does not matter in that case).

> 
> without having to parenthesize unduly, but one cannot write
> 
> let z = -x ** y;
> 
> The user is forced by an early error to write either (-x)**y or -(x**y).

In traditional math notation, when you mean `(-x)**n`, you write (-x)ⁿ with 
mandatory parentheses, so I don’t expect that many people will be tempted to 
miswrite it `-x ** n`.

Making the parentheses mandatory here will be somewhat annoying in perfectly 
reasonable expressions, where you usually don’t use parentheses in real math 
notation., like:
```
let s2 =  - x**2 - y**2 - z**2 +  t**2
```

—Claude


_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to