Loading video player…

The not Operator

To learn more about this operator, check out Using the “not” Boolean Operator in Python.

00:00 First of all, a Boolean operator takes as input one or more Booleans and returns a Boolean. It’s convenient to completely specify a Boolean operator using what’s called the truth table, and we’ll do so for the three Boolean operators that we’ll focus on. In the mathematical theory of Boolean algebra, the three operators not, and, and or play an important role.

00:25 The reason is because any Boolean operator can be written in some way as a function of these three. These three operators are implemented in Python as not, and, and or—all lowercase.

00:40 You’ll see later on that Python’s implementation of and and or makes it easy to write efficient and readable code.

00:50 All right, let’s start off with the not operator. The not operator is the only unary Boolean operator implemented in Python. Unary is just a fancy word meaning that the operator takes only one input. In Python, to apply the not operator on the input x, you simply type not x.

01:11 However, not can be applied to any object, not just Boolean data types. not always returns either True or False, depending on the Boolean value of the input. Now, I mention this because not is the only Boolean operator that we’ll discuss that always returns a Boolean data type.

01:30 The other two operators that we’ll talk about, and and or—they will return one of the values of the inputs, and we’ll discuss this in upcoming lessons and how you can take advantage of it.

01:43 Here is the truth table to the not operator. So, if the input x has a Boolean value of True, then not x returns False.

01:53 And if the input x has an input value of False, then not x returns True.

02:01 So not just simply negates the Boolean value of its input.

02:07 All right, let’s try out how the not operator works on just some basic objects. So, not True, as we saw, will return False. And not False will return True. We can also apply not to integers, so not 1 returns False.

02:25 A way to interpret this is that 1 has a truth value of True, and so not True returns False. Whereas not 0 returns True.

02:37 A way to interpret this is that 0 has a truth value of False, and so not False is why we get True.

02:46 Let’s apply not to a string. So, for example, not 'hello world'.

02:53 In this case, we get False. The idea is that this non-empty string has a True value, and so not True is False.

03:01 Whereas if you were to try not with the empty string, you’re going to get True. You can interpret this as meaning that the empty string has a Boolean value of False. Let’s try this, say, on a list.

03:15 Let’s say the list [1, 2, 3]. not of this list returns False. A way for you to interpret this is that this non-empty list has a Boolean value of True.

03:28 Whereas if you were to try not with the empty list, in this case, you get True. You interpret this as meaning that the empty list has a Boolean value of False.

03:41 Let’s take a look at a quick example of how you could use the not operator to set a default value for a string in case the string is empty.

03:50 So, for example, let’s suppose that you have a field in either a database or maybe the input in some form, and it’s supposed to contain the first name of a user, and the user didn’t pass in a first name and so first_name is an empty string.

04:08 You want to display something for that first_name, and what you could do is then set a default value that you want to display in case the first_name is an empty string.

04:20 You could do this using an if statement, if not first_name. In this case, if first_name is an empty string, it will have a Boolean value of False, and not False is True, so we’ll enter into the if block.

04:36 And then maybe what you want to do is set the first_name string to, say, something like "Not given". The idea is going to be that if first_name is an empty string, then you’re going to display somewhere that the first name wasn’t given.

04:50 Go ahead and run that code. In this case, because first_name is an empty string, the if condition is going to be True, and so first_name is given the value of "Not given".

05:03 On the other hand, if first_name does have a non-empty value—so, for example, "Luigi"—in this case, our if condition in the not first_name will return a value of False because a non-empty string has a Boolean value of True and not True returns False.

05:22 And so this part of the code won’t be run inside the if statement. So in this case, our first_name still has a value of 'Luigi'.

05:33 Now, you could do this a little bit faster using the ternary operator in Python. For example, in the case where you have an empty string, you could do something like first_name, we’ll set it equal to "Not given" if the user did not pass a first name.

05:50 And so in this case, we’ll say "Not given" if not first_name, otherwise first_name should just stay as the value that was passed in by the user, so we’ll return first_name. So in this case, because the string first_name was empty, it’s going to be assigned a value of "Not given".

06:12 Whereas in the case where the name was "Luigi",

06:18 in this case, when we use the ternary operator, the not first_name returns a value of False because in this case first_name is a non-empty string, and so this condition after the if statement is False.

06:32 And so the value that first_name is set to is just the value that it currently holds, which in this case was "Luigi". So if we run this code, first_name is still 'Luigi'. All right!

06:47 This ends this lesson on the not operator. In the next lesson, we’ll take a look at the and operator.

Become a Member to join the conversation.