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

```

    m=m*3+1>n
    
```

の場合は

```

    m=(m*3+1>n)
    
```

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

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

```

    n<m=m*3+1
    
```

が

```

    (n<m)=m*3+1
    
```

と同義にならず、

```

    n<(m=m*3+1)
    
```

と同義になるのは演算子の優先順位からして違和感を覚えます。  
優先順位の他に何か規則があるのでしょうか？
CC BY-SA 3.0
2017-10-16T15:47:19.877
38766
2017-10-17T09:02:06.930
2017-10-17T09:02:06.930
25791
25791
question
ruby
Rubyの演算子の優先順位について
`n<m`はいわゆる左辺値ではないからだと思います。Rubyの公式リファレンスでも、[「代入式の左辺は以下のいずれかでなければなりません」](https://docs.ruby-
lang.org/ja/latest/doc/spec=2foperator.html#assign)として、代入式の左辺になりうるものを列挙しています。
CC BY-SA 3.0
2017-10-16T16:08:21.697
38767
2017-10-16T16:08:21.697
4010
38766
answer