1
00:00:02,120 --> 00:00:04,730
As you can probably tell by now,

2
00:00:04,730 --> 00:00:09,260
JavaScript is an extremely important programming language

3
00:00:09,260 --> 00:00:10,790
as a web developer

4
00:00:10,790 --> 00:00:13,710
because we can use it both in the browser,

5
00:00:13,710 --> 00:00:16,910
so on the frontend, as well as on the backend

6
00:00:16,910 --> 00:00:19,530
when we write server-side code with Node,

7
00:00:19,530 --> 00:00:23,220
and possibly with Express as a third-party library

8
00:00:23,220 --> 00:00:26,100
as we did it in the previous sections.

9
00:00:26,100 --> 00:00:30,350
Therefore, since JavaScript is that important,

10
00:00:30,350 --> 00:00:32,250
in this course section,

11
00:00:32,250 --> 00:00:35,010
we are going to dive deeper into it.

12
00:00:35,010 --> 00:00:37,830
And I explicitly wanna emphasize

13
00:00:37,830 --> 00:00:42,830
that we are diving into advanced JavaScript in general.

14
00:00:42,880 --> 00:00:47,010
What you'll learn in this course section applies

15
00:00:47,010 --> 00:00:51,390
to both the browser side, so frontend JavaScript

16
00:00:51,390 --> 00:00:54,310
if you use JavaScript in the browser,

17
00:00:54,310 --> 00:00:59,247
as well as backend server-side JavaScript with NodeJS.

18
00:01:00,210 --> 00:01:03,620
And I mean, in general, up to this point,

19
00:01:03,620 --> 00:01:06,810
the vast majority of things you saw applied

20
00:01:06,810 --> 00:01:09,820
to both sides; the key certain tags,

21
00:01:09,820 --> 00:01:13,820
and the core features apply to both sides.

22
00:01:13,820 --> 00:01:16,670
It's only specific functionalities,

23
00:01:16,670 --> 00:01:19,940
like requiring our files as we did it

24
00:01:19,940 --> 00:01:23,750
in the previous sections, requiring packages,

25
00:01:23,750 --> 00:01:27,260
working with something like the file system;

26
00:01:27,260 --> 00:01:31,460
these are things which are exclusive to NodeJS.

27
00:01:31,460 --> 00:01:34,360
But working with constants, with functions,

28
00:01:34,360 --> 00:01:36,770
loops, if statements;

29
00:01:36,770 --> 00:01:40,000
that is all general JavaScript code.

30
00:01:40,000 --> 00:01:42,150
And in this course section as mentioned,

31
00:01:42,150 --> 00:01:46,720
we are going to dive deeper into general JavaScript code.

32
00:01:46,720 --> 00:01:49,800
Now for that, in this course section,

33
00:01:49,800 --> 00:01:53,780
we are going to take a closer look at Functions again,

34
00:01:53,780 --> 00:01:56,340
and learn about some new features,

35
00:01:56,340 --> 00:01:59,820
and concepts are related to functions.

36
00:01:59,820 --> 00:02:03,160
And we will also take another look at Objects

37
00:02:03,160 --> 00:02:06,060
and Arrays and learn a couple of new things

38
00:02:06,060 --> 00:02:08,470
about those concepts.

39
00:02:08,470 --> 00:02:10,419
We are also going to take a look

40
00:02:10,419 --> 00:02:12,380
behind the scenes of JavaScript,

41
00:02:12,380 --> 00:02:16,400
and take a look at Reference and Primitive Values,

42
00:02:16,400 --> 00:02:19,720
and learn what exactly that is, and why it matters,

43
00:02:19,720 --> 00:02:22,150
and why you should understand it.

44
00:02:22,150 --> 00:02:26,210
And last but not least, we are also going to explore

45
00:02:26,210 --> 00:02:29,740
a concept called Asynchronous Code:

46
00:02:29,740 --> 00:02:33,320
Something we haven't really used up to this point,

47
00:02:33,320 --> 00:02:35,970
but something we will often need,

48
00:02:35,970 --> 00:02:38,560
especially when writing NodeJS code,

49
00:02:38,560 --> 00:02:41,960
but also in certain scenarios on the frontend

50
00:02:41,960 --> 00:02:44,350
which we'll explore later in the course.

51
00:02:44,350 --> 00:02:46,070
In this course section,

52
00:02:46,070 --> 00:02:49,090
I'm going to introduce you to Asynchronous Code,

53
00:02:49,090 --> 00:02:51,870
show you what that is, and how we can write

54
00:02:51,870 --> 00:02:55,740
such asynchronous code with JavaScript.

55
00:02:55,740 --> 00:02:58,860
Now, there's one important thing about this module

56
00:02:58,860 --> 00:03:01,340
which I wanna get out of the way right away:

57
00:03:01,340 --> 00:03:04,160
This course section will be challenging.

58
00:03:04,160 --> 00:03:07,210
There are many advanced concepts in here,

59
00:03:07,210 --> 00:03:10,210
which I will explain as simple examples,

60
00:03:10,210 --> 00:03:12,810
but because the examples are simple,

61
00:03:12,810 --> 00:03:17,810
it will not always be easy to see why that concept exists.

62
00:03:18,360 --> 00:03:21,040
Because of those simple examples,

63
00:03:21,040 --> 00:03:24,290
we don't really face any problems that would be solved

64
00:03:24,290 --> 00:03:27,480
by these more complex concepts.

65
00:03:27,480 --> 00:03:30,210
Now, we'll see the more problematic cases

66
00:03:30,210 --> 00:03:31,700
later in the course.

67
00:03:31,700 --> 00:03:35,010
But in order to then tackle them appropriately,

68
00:03:35,010 --> 00:03:39,030
I already wanna introduce these more advanced concepts

69
00:03:39,030 --> 00:03:41,990
here since later course sections will

70
00:03:41,990 --> 00:03:45,340
mainly focus on other tasks.

71
00:03:45,340 --> 00:03:47,880
But therefore, don't feel overwhelmed

72
00:03:47,880 --> 00:03:51,580
if some concept or the reason for the existence

73
00:03:51,580 --> 00:03:54,520
of some concept is not immediately clear

74
00:03:54,520 --> 00:03:56,800
in this course section.

75
00:03:56,800 --> 00:04:00,180
We'll see all the concepts taught in this section

76
00:04:00,180 --> 00:04:03,870
over and over again in later course sections again.

77
00:04:03,870 --> 00:04:06,290
And therefore, this course section here

78
00:04:06,290 --> 00:04:09,650
also acts kind of like a reference

79
00:04:09,650 --> 00:04:11,940
for a later course sections.

80
00:04:11,940 --> 00:04:14,850
And you can come back to this course module

81
00:04:14,850 --> 00:04:18,529
if some concepts taught in this module should still be

82
00:04:18,529 --> 00:04:22,140
unclear at a later point in the course.

83
00:04:22,140 --> 00:04:25,490
Attached to the last lecture of this course section,

84
00:04:25,490 --> 00:04:29,490
you also find a written summary, a cheat sheet

85
00:04:29,490 --> 00:04:32,680
which you can also use to look up certain concepts

86
00:04:32,680 --> 00:04:35,240
at a later point of time or to also have

87
00:04:35,240 --> 00:04:39,260
a written version in case the videos are not enough.

88
00:04:39,260 --> 00:04:40,810
Now for all of that,

89
00:04:40,810 --> 00:04:43,960
I'm in a brand new empty project,

90
00:04:43,960 --> 00:04:46,860
and we will write some JavaScript code here,

91
00:04:46,860 --> 00:04:49,090
which we execute with Node,

92
00:04:49,090 --> 00:04:52,750
but we will not build a complete Node web server;

93
00:04:52,750 --> 00:04:55,090
instead, we'll just leverage the fact

94
00:04:55,090 --> 00:04:57,910
that we can use the Node command to execute

95
00:04:57,910 --> 00:05:01,610
JavaScript files since that saves us the hassle

96
00:05:01,610 --> 00:05:04,360
of adding an extra HTML file,

97
00:05:04,360 --> 00:05:06,860
which we then have to open and evaluate

98
00:05:06,860 --> 00:05:09,020
in the browser all the time.

99
00:05:09,020 --> 00:05:11,740
Nonetheless, as emphasized everything

100
00:05:11,740 --> 00:05:15,000
I show you here applies to both the browser side,

101
00:05:15,000 --> 00:05:16,513
as well as the backend.

