😖

# Logical Operators, Seemingly Illogical Behavior

?!?!

And now an example that contains both

`and`

and `or`

:>>> 1 or 0 and 1/0 or 2

And this statement gets tricky to comprehend! Here's the core idea:

**the**`and`

**operator takes precedence over the**`or`

**operator.**In simpler English, what this means is that the statement looks something like this:

>>> 1 or (0 and 1/0) or 2

This statement first evaluates

`1`

, finds it to be a truthy value, and immediately returns it. This is why the `1/0`

doesn't throw an error.Try this one yourself:

>>> 0 or None and 1/0 or 2

Now that you've given this a shot, let's walk through it together!

>>> 0 or None and 1/0 or 2

>>> 0 or (None and 1/0) or 2

First, the

`or`

statement evaluates 0. Finding it to be a false-y value, it keeps going. It evaluates `(None and 1/0)`

next. In this, the `and`

finds `None`

to be the first false-y value, and immediately returns it. The outer `or`

statements sees `None`

as the next value, and keeps going. It therefore returns `2`

, the first truth-y value it finds! Last modified 1yr ago