Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

The or Operator

00:00 The or operator is the other binary Boolean operator in Python. In Python, to apply the or operator on the inputs x and y, you type x or y.

00:13 or returns a value of False only when both of the operands evaluate to False. In other words, if one of the inputs is True, then or is going to return True. Here is the truth table to the or operator. Notice that the last row in the truth table is the only time when or returns a value of False and it happens when both of the inputs have a value of False.

00:39 Just like the and operator, there’s another way to think about the or operator with regards to the order in which the inputs come in.

00:48 Let’s divide those into two main cases. The first main case corresponds to when the first input to the or operator is True. In these two sub-cases, the two first rows of the truth table—when the first input is True or returns True.

01:07 So these two cases correspond to or’s short-circuiting feature. When the first input is True, or immediately returns True and the second input is not evaluated.

01:19 The next main case corresponds to when the first input to the or operator is False. In this case, the second input, or the value of the second input, completely determines what the value is to the or operator.

01:36 Just like the and operator, or will return the value of the operand consistent with or’s truth table.

01:44 Let’s see this in more detail. When Python sees the expression x or y, Python will first evaluate x, and if the Boolean value of x is True or if x has a truthy value, then or will return the value of x.

02:03 So this case corresponds to or’s short-circuiting feature. If the first input is x, then x or its value is returned and the second input plays no role. Otherwise, if the first input x is False, then the second input y is evaluated and the resulting value of y is returned. So just like and, the or operator is going to return a value—not necessarily a Boolean data type.

02:34 Let’s take a look at some examples.

02:38 Let’s use the product() function in the itertools to generate the truth table of the or operator. So go ahead and import from the itertools module, import the product() function.

02:52 And then go ahead and write out a for loop, so for x, y in product() of the list that contains the Boolean values True and False.

03:04 And you want to create the Cartesian product of that list with itself, so go ahead and write repeat=2 for the keyword argument.

03:13 Then, like before, go ahead and print the value of the or operator on each of the operands x and y. So f"{x} or {y} =", and then here you’ll actually want to evaluate the or operator on x and y.

03:32 And let’s add a little bit of space in between the x so that things get indented a little bit. Go ahead and run that. And so as we saw in the truth table, the only time when or returns a False Boolean output is when both of the inputs are False, and then in all other cases it’s going to return True.

03:55 All right, now let’s see some examples of what the or operator will return depending on what the inputs are. Let’s define that print_and_return() function like we did before with the and operator. And if you remember, this will just simply return… Well, first it will print that it is returning, so f"I am returning {x}", and then it will actually return the value of x. And let’s add again that tab (\t) in there, just so that when things get printed it’s not so much to the left. Go ahead and run that.

04:33 And let’s first just try this with, say, True or print_and_return(), the value of False. And so in this case, the first operand is True, or evaluates to True, and so the or operator will short-circuit.

04:51 So, if you tried something like True or print_and_return(), and here you’re going to have a 1/0 input to the print_and_return() function—well, that never actually gets executed, right?

05:05 The first operand is True, we know then that the or will short-circuit, and we won’t generate a black hole with that division by zero. On the other hand, if the first input to or is False, then we know that the second expression is going to be evaluated. In this case, we’re going to be evaluating the print_and_return() function. And in this case, we get a I am returning 5 and then the actual return value.

05:36 So, in this case, if you did divide by 0, you would be generating a black hole.

05:44 Now let’s see how we can use the or operator to set a default value. I don’t know if you remember, but we used the not operator to set a default value for the name of a user if the user didn’t pass a name. So, for example, you read in the value that’s passed in for the first_name and it’s an empty string, and you know that if you type not first_name, then this returns a value of True. And again, you interpret this as saying it must mean that as a Boolean, an empty string must have a False value, because not False is True.

06:22 So, how can we use this, say, to set a default value for the first_name if no first name is given? So go ahead and set first_name. Let’s make sure it’s an empty string.

06:35 And then we want to set first_name to "Not given" if first_name was an empty string or we just want to leave it just like its current value, right?

06:46 If the user did pass the name "Luigi", we want to make sure that the first_name remains "Luigi". So go ahead and type first_name or "Not given".

06:57 All right, let’s analyze what’s going to happen. You know that the empty string, as a Boolean, evaluates to False. And so False in the first operand in an or operator expression, means that the second input is going to be evaluated, and in this case, it’s going to be "Not given".

07:16 So when you run that, first_name now has a value of 'Not given'.

07:23 On the other hand, if the user did pass in a first name, say again the name was "Luigi", and then in this case if you run the exact same line, or the exact same code that we had where we’re checking first_name or "Not given", and go ahead and run that, then we know that a non-empty string has a truthy value.

07:48 So in other words, or will short-circuit to the value of first_name, and in this case, then, the first_name remains with the value of 'Luigi'.

08:01 All right! Well, this ends the lesson on the or operator. In the next lesson, we’ll take a look at the different comparison operators in Python.

08:09 I’ll see you then!

Become a Member to join the conversation.