# Using Python's and Operator With Common Objects

**00:00**
In this lesson, you’ll learn that `and`

can be used with more general objects than Boolean expressions and see how that evaluation is performed.

**00:09**
`and`

can be used with Python objects because all objects in Python have a truth value. Most objects are `True`

, but there are some exceptions.

**00:18**
Thee `None`

object and `False`

, of course, are `False`

. Any numeric type with a value of zero is `False`

, and empty collections like lists, strings, and so on are also considered `False`

. Also, if a class has certain dunder methods, like say `.__len__()`

or `.__bool__`

, then what they return, like a length of zero, would determine if that object were `False`

. So Python objects can be connected with the word `and`

since they all have some truthiness to them.

**00:51**
When `and`

is performed on objects, the value returned is one of those objects. The result isn’t going to be `True`

or `False`

.

**01:01**
This makes Python’s implementation a little different than other languages that let you perform `and`

with things other than just Boolean expressions.

**01:10**
If the first operand is `False`

, then that object will be the result of the operation. Remember how I phrased something in an earlier lesson? If the first operaand is `False`

, that’s what’s returned—*that* meaning the first operand.

**01:26**
If the first operand is `True`

, then the second operand object is the result of the operation. As you heard me say earlier, I carefully phrased these results in this manner before so that it would match up with a more general case you’re learning now. So in your program, if you have two objects, `x`

and `y`

, and you’re taking the `and`

of them, the result will be `x`

if `x`

is `False`

and `y`

if `x`

is `True`

.

**01:53**
And again, this is basically a generalization of what you’ve learned before. Let’s take a look at some examples. `2 and 3`

. This makes perfect sense in Python.

**02:07**
And since `2`

is considered true, the result of the operation should be the second operand, `3`

. Another one with numbers: `5`

and `0.0`

.

**02:19**
Since `5`

is also true, the second operand, `0.0`

, will be the result.

**02:26**
In this case, the first operand is an empty list. That evaluates to `False`

, so that operand, the empty list, should be the result. And it is.

**02:39**
Here, `0`

is considered false, so that will be the result. And one more case. `False`

is, of course, false, so that will be the result.

**02:55**
Next, you’ll learn how to mix Boolean expressions and objects using `and`

.

Become a Member to join the conversation.