Приоритет оператора для And / && в Ruby [дубликат]

На этот вопрос уже есть ответ здесь:

Разница между «и» и && в Ruby? 7 ответов

У меня есть вопрос относительно ключевых слов и / && / = в Ruby.

Документы ruby говорят, что приоритет для упомянутых ключевых слов: (1) &&, (2) =, (3) и.

У меня есть этот фрагмент кода, который я написал:

def f(n) 
 n
end

if a = f(2) and  b = f(4) then  
    puts "1) #{a} #{b}" 
 end

if a = f(2) &&  b = f(4) then   
    puts "2) #{a} #{b}"     
end

Выход:

1) 2 4 [Ожидается]

2) 4 4 [Почему?]

По какой-то причине использование && приводит к тому, что значения a и b равны 4?

Ответы на вопрос(5)

Ваш ответ на вопрос