Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
1
00:00:01,170 --> 00:00:04,430
Let's do the opposite of the last lecture
2
2
00:00:04,430 --> 00:00:07,943
and create a function that returns a new function.
3
3
00:00:09,640 --> 00:00:14,163
So I'm gonna write a very simple greet function here,
4
4
00:00:15,740 --> 00:00:19,800
because this is really just to demonstrate this point here
5
5
00:00:19,800 --> 00:00:21,833
as easily as possible.
6
6
00:00:23,120 --> 00:00:27,590
So here we can pass in a greeting like hi
7
7
00:00:27,590 --> 00:00:30,890
or hello or something like that.
8
8
00:00:30,890 --> 00:00:33,018
And then all this function will do
9
9
00:00:33,018 --> 00:00:35,920
is to return a new function.
10
10
00:00:35,920 --> 00:00:36,950
So as always,
11
11
00:00:36,950 --> 00:00:40,973
we write return and then simply a new function value.
12
12
00:00:43,010 --> 00:00:45,020
And this new function that we return
13
13
00:00:45,020 --> 00:00:48,266
will also have a parameter so it will be able
14
14
00:00:48,266 --> 00:00:50,743
to receive arguments. Right?
15
15
00:00:51,770 --> 00:00:54,033
And so what this function here will do,
16
16
00:00:55,290 --> 00:00:57,540
is it will simply look to the console,
17
17
00:00:57,540 --> 00:01:01,170
basically the greeting, and then the name of the person
18
18
00:01:01,170 --> 00:01:03,273
that we passed into this function.
19
19
00:01:04,940 --> 00:01:06,310
So let's just write this
20
20
00:01:06,310 --> 00:01:08,973
and it will make sense when we see this in action.
21
21
00:01:10,210 --> 00:01:12,853
I'm sure it looks a bit weird right now.
22
22
00:01:13,890 --> 00:01:16,483
And now let's actually use the greet function.
23
23
00:01:18,180 --> 00:01:20,260
So let's say greet
24
24
00:01:21,350 --> 00:01:25,450
with hey and so 'hey' is the greeting here.
25
25
00:01:25,450 --> 00:01:29,940
Now what will be the result of this function call?
26
26
00:01:29,940 --> 00:01:34,290
Well, it's gonna be this function, right?
27
27
00:01:34,290 --> 00:01:39,080
And so let's store the result of this function call,
28
28
00:01:39,080 --> 00:01:41,913
which will be as we just said, that function,
29
29
00:01:43,420 --> 00:01:45,943
I'm gonna call this one greeterHey.
30
30
00:01:49,590 --> 00:01:54,590
So this value here now is actually now a function.
31
31
00:01:54,710 --> 00:01:58,680
Okay. And essentially it is this function.
32
32
00:01:58,680 --> 00:02:01,410
So what this means is that we can now call
33
33
00:02:01,410 --> 00:02:05,323
this greeter function just as if it was any other function
34
34
00:02:05,323 --> 00:02:07,953
that we defined ourselves.
35
35
00:02:07,953 --> 00:02:10,536
So let's say greeterHey Jonah's
36
36
00:02:12,200 --> 00:02:14,350
and let's call it another time.
37
37
00:02:14,350 --> 00:02:18,401
Greeter Hey Steven
38
38
00:02:18,401 --> 00:02:20,540
and now I'm gonna run it.
39
39
00:02:20,540 --> 00:02:24,610
And indeed we get Hey Jonas and Hey Steven.
40
40
00:02:24,610 --> 00:02:28,133
And so this worked again because this greeterHey,
41
41
00:02:28,133 --> 00:02:30,630
it's essentially this.
42
42
00:02:30,630 --> 00:02:34,020
And so now we're calling it with the argument of Jonas.
43
43
00:02:34,020 --> 00:02:36,650
And so this name here is then of course,
44
44
00:02:36,650 --> 00:02:38,810
this name that we specified here.
45
45
00:02:38,810 --> 00:02:41,013
Now, the greeting is still coming from
46
46
00:02:41,013 --> 00:02:43,592
this greet function here.
47
47
00:02:43,592 --> 00:02:46,483
And in case you're wondering why that actually works,
48
48
00:02:46,483 --> 00:02:50,760
it is because of something called a closure.
49
49
00:02:50,760 --> 00:02:54,100
Now closures are a very complex and difficult
50
50
00:02:54,100 --> 00:02:57,146
to understand mechanism that's part of JavaScript.
51
51
00:02:57,146 --> 00:03:00,320
And so there are two separate videos at the end
52
52
00:03:00,320 --> 00:03:02,800
of the section about closures.
53
53
00:03:02,800 --> 00:03:04,300
So closures is one of the
54
54
00:03:04,300 --> 00:03:07,870
most misunderstood topics in JavaScript.
55
55
00:03:07,870 --> 00:03:09,553
So don't worry about that Now,
56
56
00:03:10,501 --> 00:03:13,430
what matters here is that our first function a greet
57
57
00:03:13,430 --> 00:03:17,182
returned a new function that we stored into this variable.
58
58
00:03:17,182 --> 00:03:20,753
And so this variable is now just a function that we can call
59
59
00:03:20,753 --> 00:03:25,240
as we did here again sing the parenthesis syntax.
60
60
00:03:25,240 --> 00:03:28,493
And of course we could also do it all in one go.
61
61
00:03:29,490 --> 00:03:33,642
So we can again, call greet. let's say hello now.
62
62
00:03:33,642 --> 00:03:38,130
And so again this year is now a function.
63
63
00:03:38,130 --> 00:03:39,932
Okay so if this is a function,
64
64
00:03:39,932 --> 00:03:44,860
we can immediately call it, right? And so we call like this,
65
65
00:03:44,860 --> 00:03:48,410
and then we passed into name which is the argument
66
66
00:03:48,410 --> 00:03:52,750
of this function here, right? And so even though
67
67
00:03:52,750 --> 00:03:56,090
this looks a bit weird, it is gonna to work.
68
68
00:03:56,090 --> 00:04:00,580
And so we get hello Jonas now.All right.
69
69
00:04:00,580 --> 00:04:04,000
And now this example might look a bit weird
70
70
00:04:04,000 --> 00:04:07,270
and unnecessary for you Like what's the point
71
71
00:04:07,270 --> 00:04:10,400
of having functions returning other functions?
72
72
00:04:10,400 --> 00:04:12,620
Well, this will actually become extremely
73
73
00:04:12,620 --> 00:04:15,070
useful in some situations.
74
74
00:04:15,070 --> 00:04:17,650
And especially if we're using a really important
75
75
00:04:17,650 --> 00:04:20,960
programming paradigm called functional programming.
76
76
00:04:20,960 --> 00:04:23,510
And I think I've mentioned it sometimes throughout
77
77
00:04:23,510 --> 00:04:25,360
the course and we're actually gonna
78
78
00:04:25,360 --> 00:04:29,520
look at functional programming by the end of the course.
79
79
00:04:29,520 --> 00:04:32,150
Maybe not by the time I first published the course,
80
80
00:04:32,150 --> 00:04:34,610
but certainly some point later.
81
81
00:04:34,610 --> 00:04:37,031
Anyway make sure to understand this here
82
82
00:04:37,031 --> 00:04:40,160
and especially this line of code.
83
83
00:04:40,160 --> 00:04:42,300
And if you understand this, then I'm sure
84
84
00:04:42,300 --> 00:04:45,123
you understood everything what happened here.
85
85
00:04:46,030 --> 00:04:48,730
Now, just as a small challenge to finish here,
86
86
00:04:48,730 --> 00:04:51,399
try to rewrite this function here
87
87
00:04:51,399 --> 00:04:53,940
using only arrow functions.
88
88
00:04:53,940 --> 00:04:57,220
And believe me that's gonna look a little bit confusing,
89
89
00:04:57,220 --> 00:04:59,060
but I'm sure you can do it.
90
90
00:04:59,060 --> 00:05:01,770
So just take some time and try to rewrite
91
91
00:05:01,770 --> 00:05:04,560
that greet function using arrow functions.
92
92
00:05:04,560 --> 00:05:06,110 line:15%
And I see you here in a minute.
93
93
00:05:08,860 --> 00:05:10,320
Okay,
94
94
00:05:10,320 --> 00:05:11,190
so let's
95
95
00:05:12,940 --> 00:05:14,170
see how it's done
96
96
00:05:16,790 --> 00:05:18,220
so greet
97
97
00:05:18,220 --> 00:05:19,733
Just gonna call it R,
98
98
00:05:21,770 --> 00:05:24,090
so this one takes again,
99
99
00:05:24,090 --> 00:05:28,130
greeting as an argument and it returns a new function.
100
100
00:05:28,130 --> 00:05:30,810
So this means that it only has one line of code,
101
101
00:05:30,810 --> 00:05:33,030
which returns something.
102
102
00:05:33,030 --> 00:05:34,700
So all we need is this arrow.
103
103
00:05:34,700 --> 00:05:37,010
And then we don't even need the curly braces
104
104
00:05:37,010 --> 00:05:40,050
and we don't need to return a statement.
105
105
00:05:40,050 --> 00:05:42,490
So what are we gonna return from here?
106
106
00:05:42,490 --> 00:05:43,970
A new function.
107
107
00:05:43,970 --> 00:05:48,140
So again, an arrow function and so another arrow here,
108
108
00:05:48,140 --> 00:05:49,370
and then simply this
109
109
00:05:53,430 --> 00:05:55,800
let's give it a safe and a try
110
110
00:05:57,110 --> 00:05:57,970
So greet
111
111
00:05:58,920 --> 00:05:59,753
R
112
112
00:06:00,710 --> 00:06:04,860
and let's use hi, this time and yeah,
113
113
00:06:04,860 --> 00:06:06,133
we get hi Jonas,
114
114
00:06:07,700 --> 00:06:08,800
okay?
115
115
00:06:08,800 --> 00:06:10,645
So this is an even shorter way
116
116
00:06:10,645 --> 00:06:13,850
of writing the same function but in my opinion,
117
117
00:06:13,850 --> 00:06:16,540
it's actually a lot more confusing.
118
118
00:06:16,540 --> 00:06:18,250
And that's why I wrote it using
119
119
00:06:18,250 --> 00:06:20,440
this more traditional way here.
120
120
00:06:20,440 --> 00:06:21,273
But in the end,
121
121
00:06:21,273 --> 00:06:24,350
it's also simply one arrow function
122
122
00:06:24,350 --> 00:06:26,800
returning another arrow function.
123
123
00:06:26,800 --> 00:06:28,855
And so that's the essence of this video,
124
124
00:06:28,855 --> 00:06:30,569
which I hope was clear to you.
125
125
00:06:30,569 --> 00:06:34,163
And if so, then let's move on right to the next one.
10605
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.