Operators are applied in order of their precedence.
It's not that the right side is (always) evaluated first, it's that addition has higher precedence than assignment. Run irb to test.
$ irb
2.2.0 :001 > x # => the variable 'x' doesn't yet exist.
NameError: undefined local variable or method `x' for main:Object
from (irb):1
from /home/mike/.rvm/rubies/ruby-2.2.0/bin/irb:11:in `'
2.2.0 :002 > x = 5 # => Assign x the value 5.
=> 5 # => Evaluating the expression 'x = 5' returns 5
2.2.0 :003 > x # => and the value of 'x' is 5.
=> 5
2.2.0 :004 > x = x + 1 # => Addition has higher precedence than
# => assignment. Ruby evaluates 'x + 1', then
# => assigns the result to 'x', and finally
# => returns the result.
=> 6
2.2.0 :005 > x # => 'x' has the same value as the previous
# => result.
=> 6
2.2.0 :006 > x + 1 # => This expression returns the value 7.
=> 7
2.2.0 :007 > x # => But without the assignment operator (=),
=> 6 # => the value of 'x' didn't change.
Why is this important? Because operator precedence doesn't always work the way you think it ought to.
$ irb
2.2.0 :001 > true and false # => That makes sense.
=> false
2.2.0 :002 > x = true and false # => That *seems* to make sense, but
=> false
2.2.0 :003 > x # => 'x' has the value true, because
=> true # => assignment has higher
# => precedence than Boolean 'and'.
2.2.0 :004 > x = (true and false)
=> false
2.2.0 :005 > x
=> false
2.2.0 :006 >
Most people expect the expression x = true and false to be equivalent to x = (true and false), because they expect Ruby to always evaluate the right side first. But Ruby doesn't do that. It evaluates assignment (=) before Boolean and. So the expression x = true and false is actually equivalent to (x = true) and false.
Ruby's precedence table on SO