# How to test for logic operator precedence

While coding in Python, I realized I couldn't remember which is evaluated first:

and (the logical conjunctive operator),
or (the logical disjunctive operator).

Of course, I could've used parentheses (or looked it up), but I wanted to try to find out for myself. I tried endless combinations of False, True, and, and or but could not figure it out.

Given a language with unknown operator precedence, where operators of equal precedence evaluate left-to-right, find a way to conclusively determine whether the logical conjunction or the logical disjunction is evaluated first.

You can only use False, True, and, and or in your answer.

Note: You may assume that or and and definitely have different precedence.

• Are we assuming operator precedence either (1) evaluates all and left to right and then all or left to right, or (2) evaluates all or left to right and then all and left to right? – noedne Apr 30 '18 at 1:35
• @noedne Yes. Otherwise they'd have the same precedence – somebody Apr 30 '18 at 1:37
• @noedne edited. – OldBunny2800 Apr 30 '18 at 2:34
• Nice edit. Do we also assume that and and or have different precedence? – noedne Apr 30 '18 at 2:42
• Yes, as stated (slightly unclearly) in the question. Let me clarify that. – OldBunny2800 Apr 30 '18 at 2:51

## 1 Answer

True or True and False

Giving True means 'and' then 'or'. Giving False means 'or' then 'and'.

Bonus:

False and True or True

Also use this to test if the precedence is same. If both tests are resulting different value (first test gives False and second test gives True) then the precedence is same.

• Wow, how did I not think of that… facepalm Good job! – OldBunny2800 Apr 30 '18 at 1:42
• The middle value is actually irrelevant. It could be either true or false and the test would still work the same. – Kruga Apr 30 '18 at 8:58