It&#x27;s not about operator precedence, it&#x27;s about sequence points. Assignment—including in ++—is a side-effecting operation. An expression form that does side effects can lead to very confusing code like:<p><pre><code>    foo(a++, a++);
</code></pre>
What values get passed foo()? In some languages, it&#x27;s undefined (!). In others, there is a well-defined answer, but even there the answer may not be <i>intuitive</i>. Removing assignment expression forms avoids this. Note that even &quot;=&quot; is a statement in Go.<p>It does sacrifice a little expressiveness. But in languages that have dedicated syntax like ranges for iterating over sequential numbers, the ++ and -- operators end up pretty rarely used so it&#x27;s no big loss.