Как подсказывает @Erik, обычное правило для логических операторов состоит в том, что AND имеет приоритет над OR.Это часто формулируется следующим образом: логическое выражение - это последовательность членов , соединенных вместе с ИЛИ, и каждый член представляет собой последовательность факторов , соединенных вместе с И.Таким образом, вам нужно отслеживать, находитесь ли вы «внутри» термина, и применять операции И только к результату для текущего термина, и использовать ИЛИ только к результату всего термина.
Итак, @ Erik'sпример ломается, потому что хотя «false AND true» само по себе является false, это всего лишь один из двух терминов во внешнем ИЛИ, а другой - true.