Difference between or and || when setting variables

ruby

Solution

`or` has lower precedence than `=`.

test = nil or true

is the same as

(test = nil) or true

which is `true`, while setting `test` to `nil`.

`||` has higher precedence than `=`.

test = nil || true

is the same as

test = (nil || true)

which is `true`, while setting `test` to `true`.

Problem

I was under the impression that `||` and `or` were synonymous. Setting variable with `or` does not hold value; why? ``` >> test = nil or true => true >> test => nil >> test = false or true => true >> test => false ``` Works 'as expected' with `||` ``` >> test = nil || true => true >> test => true ```

Original source