Some further study has been helpful. Am I close to the mark in answering my own question?<br><br>- Further reading shows that Swift's rationalized operator precedence levels broadly align with those of Erlang and Go. (However, those languages also seem to lack documentation on how they arrived at this set of precedence levels.)<br><br>- It is quite evident why << is considered exponentiative.<br><br>- Dennis Ritchie has explained <<a href="http://www.lysator.liu.se/c/dmr-on-or.html">http://www.lysator.liu.se/c/dmr-on-or.html</a>> why & has lower precedence than == in C, and why in hindsight that is better off changed. This change has been implemented in Swift/Go/Erlang and also in other languages like Python.<br><br>- & is considered multiplicative because for two bits A and B, A & B == A * B.<br><br>- ^ and | should have equal precedence to - and +, respectively, by analogous reasoning.<br><br>- It also happens to be rational for & to have higher precedence than | by analogy with && and ||.<br><br>It's a bit of a bummer, if this line of reasoning was indeed used in arriving at these operator precedence levels, that Swift will not allow evaluation of true * true (etc.) without casting. I would expect true & true == true * true.<br><br><div class="gmail_quote"><div dir="ltr">On Sun, Feb 14, 2016 at 1:42 AM Xiaodi Wu <<a href="mailto:xiaodi.wu@gmail.com">xiaodi.wu@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Very well. May I ask what the rationale might be? I'm not sure I can deduce it from the available documentation. In other circumstances where Swift operators differ from C (e.g. overflow handling for addition, etc.), the behavior is amply documented and the rationale quite clear. (I should add that Swift documentation currently introduces these bitwise operators as 'familiar' to those coming from C and Objective-C before defining what they are, which discourages careful study.)<br><div class="gmail_quote"><div dir="ltr">On Sat, Feb 13, 2016 at 10:10 PM Chris Lattner <<a href="mailto:clattner@apple.com" target="_blank">clattner@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On Feb 13, 2016, at 6:32 AM, Xiaodi Wu via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:<br>
><br>
> Not sure if this is intentional, a bug, and/or a topic for evolution:<br>
><br>
> In Swift, bitwise operators seem to have a different precedence in<br>
> relation to other operators than they do in (all other?) C-family<br>
> languages, at least per documentation.<br>
<br>
Yep, this is true, and this is intentional. Swift has a greatly simplified and rationalized set of precedences, and yes, that means they differ from C.<br>
<br>
-Chris<br>
<br>
</blockquote></div></blockquote></div>