Rubyの演算子の優先順位について


Rubyの演算子は優先順位が高い順に*、+、>、=なので

[code]

    m=m*3+1>n
    
[/code]

の場合は

[code]

    m=(m*3+1>n)
    
[/code]

と同義になるのは納得がいきます。

しかし、(比較演算子からみて)これと左右を逆にした

[code]

    n<m=m*3+1
    
[/code]

が

[code]

    (n<m)=m*3+1
    
[/code]

と同義にならず、

[code]

    n<(m=m*3+1)
    
[/code]

と同義になるのは演算子の優先順位からして違和感を覚えます。  
優先順位の他に何か規則があるのでしょうか？




`n<m`はいわゆる左辺値ではないからだと思います。Rubyの公式リファレンスでも、[「代入式の左辺は以下のいずれかでなければなりません」](https://docs.ruby-
lang.org/ja/latest/doc/spec=2foperator.html#assign)として、代入式の左辺になりうるものを列挙しています。




`n<m`はいわゆる左辺値ではないからだと思います。Rubyの公式リファレンスでも、[「代入式の左辺は以下のいずれかでなければなりません」](https://docs.ruby-
lang.org/ja/latest/doc/spec=2foperator.html#assign)として、代入式の左辺になりうるものを列挙しています。

