I found out (by introducing a bug into the application I’ve been working on) that “or” and “||” do not have equal precedence in Ruby.
More importantly, the assignment operator “=” has higher precedence than “or” so that means that while the expression
>> foo = nil || 2
=> 2
>> foo
=> 2
results in foo being assigned the value 2 as you might expect, the following expression leaves foo assigned the value nil.
>> foo = nil or 2
=> 2
>> foo
=> nil
This is well covered ground online (see this post) but I was surprised that this oddity didn’t warrant an explicit mention in the operator precedence section of the Pickaxe book.