WEBVTT

1
00:00:01.150 --> 00:00:03.770
<v Instructor>Let's now learn about the new operator</v>

2
00:00:03.770 --> 00:00:07.763
with the funny name of nullish coalescing operator.

3
00:00:09.120 --> 00:00:11.810
So in the last video, we used the OR operator

4
00:00:11.810 --> 00:00:13.850
to set a default value

5
00:00:13.850 --> 00:00:18.320
in case that the first value was a falsy value.

6
00:00:18.320 --> 00:00:20.833
So let me bring back that code here, actually.

7
00:00:23.450 --> 00:00:24.593
So this one,

8
00:00:25.890 --> 00:00:30.403
but we're only interested in the OR operator here.

9
00:00:33.620 --> 00:00:36.270
So let's call this one simply guests.

10
00:00:36.270 --> 00:00:39.390
And so let's again remember what happens here,

11
00:00:39.390 --> 00:00:42.310
which is when we set numGuests to zero,

12
00:00:42.310 --> 00:00:46.130
then JavaScript will still take this default value here

13
00:00:46.130 --> 00:00:50.810
and assign it to guests because zero is a falsy value now,

14
00:00:50.810 --> 00:00:54.340
and so therefore, we go to the second operand.

15
00:00:54.340 --> 00:00:56.290
However, fortunately for us,

16
00:00:56.290 --> 00:00:58.950
there is a very good solution to this,

17
00:00:58.950 --> 00:01:01.820
and that's the new operator with the very weird name

18
00:01:01.820 --> 00:01:04.460
of nullish coalescing operator.

19
00:01:04.460 --> 00:01:07.840
It's an operator that was introduced in ES2020,

20
00:01:07.840 --> 00:01:10.290
and it works like this.

21
00:01:10.290 --> 00:01:13.973
So guests, let's call this one Correct now.

22
00:01:15.210 --> 00:01:20.020
And so it works almost the same way as the OR operator,

23
00:01:20.020 --> 00:01:25.020
really almost the same, but it will fix or error here.

24
00:01:25.080 --> 00:01:27.260
So let's see that it does,

25
00:01:27.260 --> 00:01:29.310
and then I'll explain to you why that is.

26
00:01:30.190 --> 00:01:33.160
All right, and now indeed, we get zero.

27
00:01:33.160 --> 00:01:36.360
So we get the real value that is actually here.

28
00:01:36.360 --> 00:01:39.830
And now if we take it off, only then we get 10,

29
00:01:39.830 --> 00:01:43.130
which is the default value that we want.

30
00:01:43.130 --> 00:01:45.230
So why does this work?

31
00:01:45.230 --> 00:01:48.630
Well, it is because the nullish coalescing operator

32
00:01:48.630 --> 00:01:51.450
works with the idea or with the concept

33
00:01:51.450 --> 00:01:54.823
of nullish values instead of falsy values.

34
00:01:57.700 --> 00:02:00.100
And nullish values are null

35
00:02:01.700 --> 00:02:04.660
and undefined.

36
00:02:04.660 --> 00:02:05.580
That's it.

37
00:02:05.580 --> 00:02:09.690
It does not include a zero

38
00:02:09.690 --> 00:02:10.983
or the empty string.

39
00:02:12.080 --> 00:02:15.150
So basically, for the nullish coalescing operator,

40
00:02:15.150 --> 00:02:19.610
it is as if the zero and the empty string

41
00:02:19.610 --> 00:02:21.580
were not falsy values

42
00:02:21.580 --> 00:02:24.580
and were instead truthy values as well.

43
00:02:24.580 --> 00:02:27.290
But again, this operator does work

44
00:02:27.290 --> 00:02:30.260
with the principle of nullish values.

45
00:02:30.260 --> 00:02:32.040
And so all the nullish values

46
00:02:32.040 --> 00:02:34.313
will short circuit the evaluation here.

47
00:02:35.660 --> 00:02:39.260
Okay, so only if this was null or undefined,

48
00:02:39.260 --> 00:02:41.880
only then the second operand here

49
00:02:41.880 --> 00:02:44.640
would be executed and returned.

50
00:02:44.640 --> 00:02:46.690
And so right now, that's the case

51
00:02:46.690 --> 00:02:49.210
as number of guests does not exist,

52
00:02:49.210 --> 00:02:51.300
so we commented it out here.

53
00:02:51.300 --> 00:02:52.950
And so now it is undefined,

54
00:02:52.950 --> 00:02:56.623
and so only then the evaluation continues.

55
00:02:57.630 --> 00:03:01.630
But again, as we put it back, it now is zero,

56
00:03:01.630 --> 00:03:04.410
and zero is not a nullish value.

57
00:03:04.410 --> 00:03:07.900
And therefore, the evaluation here is short circuited,

58
00:03:07.900 --> 00:03:12.313
and immediately, this first non-nullish value is returned.

59
00:03:13.840 --> 00:03:16.240
All right, and that's actually all for now

60
00:03:16.240 --> 00:03:19.040
about this nullish coalescing operator.

61
00:03:19.040 --> 00:03:22.210
It's a really great and really useful operator,

62
00:03:22.210 --> 00:03:26.050
even though right now, it might not seem that useful,

63
00:03:26.050 --> 00:03:27.990
but as we go through the project,

64
00:03:27.990 --> 00:03:29.633
you will see that it really is.

