<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div style="font-family:Calibri, Arial, Helvetica, sans-serif; font-size:12.0pt; color:#1F497D">
<div><span style="font-size: 14.56px; line-height: normal;">I object to #4. Disallowing perfectly reasonable math expressions (Claude's is a good example) makes this operator too surprising to include in the language.</span></div>
<div><br>
</div>
<div id="signature-x" style="-webkit-user-select:none; font-family:Calibri, Arial, Helvetica, sans-serif; font-size:12.0pt; color:#1F497D">
 </div>
</div>
<div id="quoted_header" style="clear:both;"><br>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<span style="font-size:11.0pt;font-family:Calibri, Arial, Helvetica, sans-serif"><b>From:</b> Brendan Eich <brendan.eich@gmail.com><br>
<b>Sent:</b> Sep 24, 2015 13:18<br>
<b>To:</b> Mark S. Miller; Claude Pache<br>
<b>Cc:</b> es-discuss<br>
<b>Subject:</b> Re: Exponentiation operator precedence<br>
</span></div>
</div>
<br type="attribution">
<div id="quoted_body">
<blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Right. It's confusing because (as opposed to Math), ** is not a superscripting operator whose typography suggests higher precedence than -, and this matters for the sign of the result when exponentiating.
<div><br>
</div>
<div>Claude, the Math folks won't often need to negate the result, but when they do, they'll have to parenthesize. That's the price of the typographic shift and the precedence inversion that it suggests to many people.</div>
<div><br>
</div>
<div>/be</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Sep 24, 2015 at 11:16 AM, Mark S. Miller <span dir="ltr">
<<a href="mailto:erights@google.com">erights@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote"><span class="">On Thu, Sep 24, 2015 at 11:08 AM, Claude Pache
<span dir="ltr"><<a href="mailto:claude.pache@gmail.com">claude.pache@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div style="word-wrap:break-word"><br>
<div><span>
<blockquote type="cite">
<div>Le 24 sept. 2015 à 16:11, Brendan Eich <<a href="mailto:brendan@mozilla.org">brendan@mozilla.org</a>> a écrit :</div>
<br>
<div>
<div bgcolor="#FFFFFF" style="background-color:rgb(255,255,255)">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.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
</span>
<div>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</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div><br>
</div>
</span>
<div>Before Jason pointed out the discrepancy:</div>
<div>  * all of us on the committee who were engaged with the proposal</div>
<div>  * including myself,</div>
<div>  * all those who reviewed the proposal, </div>
<div>  * and all those who implemented the proposal </div>
<div>had the opposite naive expectation. That's the point. In the absence of learning about this case specifically, many people will be unpleasantly surprised by #2, and many by #3. Therefore #4 wins. (Actually, it just won ;).)</div>
<span class="">
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div style="word-wrap:break-word">
<div>
<div>multiplication operator in expressions like `-2*x` (although it does not matter in that case).</div>
<span><br>
<blockquote type="cite">
<div>
<div bgcolor="#FFFFFF" style="background-color:rgb(255,255,255)"><br>
without having to parenthesize unduly<span style="font-family:monospace"></span>, but one cannot write<br>
<br>
<big><span style="font-family:monospace">let z = -x ** y;</span></big><br>
<br>
The user is forced by an early error to write either <span style="font-family:monospace">
(-x)**y</span> or <span style="font-family:monospace">-(x**y)</span>.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
</span>
<div>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`.</div>
<div><br>
</div>
<div>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:</div>
<div>```</div>
<div>let s2 =  - x**2 - y**2 - z**2 +  t**2</div>
<div>```</div>
<span><font color="#888888">
<div><br>
</div>
<div>—Claude</div>
<div><br>
</div>
</font></span></div>
<br>
</div>
</blockquote>
</span></div>
<span class="HOEnZb"><font color="#888888"><br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>    Cheers,<br>
    --MarkM</div>
</font></span></div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
</body>
</html>