WEBVTT

1
00:00:01.190 --> 00:00:03.470
<v Jonas>Now that we activated bundling</v>

2
00:00:03.470 --> 00:00:05.991
it's time to configure Babel to transpile

3
00:00:05.991 --> 00:00:10.472
or super modern code back to ES5 code.

4
00:00:10.472 --> 00:00:14.382
And this is still important right now even many years

5
00:00:14.382 --> 00:00:19.250
after the new ES6 standard has been introduced.

6
00:00:19.250 --> 00:00:21.011
And the reason for that is simply

7
00:00:21.011 --> 00:00:24.040
that there are still many people out there

8
00:00:24.040 --> 00:00:26.901
who are stuck on like a windows XP

9
00:00:26.901 --> 00:00:28.929
or windows seven computer

10
00:00:28.929 --> 00:00:32.824
and two cannot upgrade their old internet explorers

11
00:00:32.824 --> 00:00:36.810
but we want our applications to work for everyone.

12
00:00:36.810 --> 00:00:39.023
And so we need to keep everyone in mind.

13
00:00:40.930 --> 00:00:42.450
Now, the good news is

14
00:00:42.450 --> 00:00:45.980
that parcel actually automatically uses Babel

15
00:00:45.980 --> 00:00:48.350
to transpile or code.

16
00:00:48.350 --> 00:00:51.602
And we can configure Babel a lot if we want to

17
00:00:51.602 --> 00:00:53.849
for example defining exactly

18
00:00:53.849 --> 00:00:57.300
what browsers should be supported

19
00:00:57.300 --> 00:01:00.420
but as always, that's a ton of work.

20
00:01:00.420 --> 00:01:02.330
And so we don't want that.

21
00:01:02.330 --> 00:01:04.770
And instead parcel makes

22
00:01:04.770 --> 00:01:07.020
some very good default decisions for us.

23
00:01:07.020 --> 00:01:12.020
And so we will simply mainly just go with these defaults.

24
00:01:12.220 --> 00:01:14.216
Now just so you get a very broad

25
00:01:14.216 --> 00:01:18.690
and very general overview of how Babel works.

26
00:01:18.690 --> 00:01:21.570
Let's just take a look at their website.

27
00:01:21.570 --> 00:01:24.334
So that's Babeljs.io

28
00:01:24.334 --> 00:01:27.132
and then here in the documentation

29
00:01:27.132 --> 00:01:31.163
let's take a look here at plugins.

30
00:01:32.290 --> 00:01:35.540
Okay. So basically Babel works

31
00:01:35.540 --> 00:01:37.720
with plugins and presets

32
00:01:37.720 --> 00:01:40.420
that can both be configured.

33
00:01:40.420 --> 00:01:43.210
Now a plugin is basically a specific

34
00:01:43.210 --> 00:01:46.820
JavaScript feature that we want to transpile.

35
00:01:46.820 --> 00:01:48.410
So to convert.

36
00:01:48.410 --> 00:01:50.950
So for example let's say we only wanted

37
00:01:50.950 --> 00:01:54.000
to convert arrow functions back to ES5

38
00:01:54.000 --> 00:01:56.850
but leave everything else in ES6

39
00:01:56.850 --> 00:02:00.070
for example, const and var declarations.

40
00:02:00.070 --> 00:02:02.920
Now usually that doesn't make a lot of sense

41
00:02:02.920 --> 00:02:05.825
because basically we will want to transpile

42
00:02:05.825 --> 00:02:08.170
everything at the same time.

43
00:02:08.170 --> 00:02:11.270
And so usually instead of using single plugins

44
00:02:11.270 --> 00:02:13.630
for each of these features,

45
00:02:13.630 --> 00:02:15.836
Babel actually uses presets.

46
00:02:15.836 --> 00:02:19.136
And so a preset is basically a bunch

47
00:02:19.136 --> 00:02:22.360
of plugins bundled together.

48
00:02:22.360 --> 00:02:26.285
And its by default parcel is going to use this preset

49
00:02:26.285 --> 00:02:28.035
and preset here.

50
00:02:28.035 --> 00:02:31.520
And this preset will automatically select

51
00:02:31.520 --> 00:02:34.650
which JavaScript features should be compiled

52
00:02:34.650 --> 00:02:36.970
based on browser support.

53
00:02:36.970 --> 00:02:39.578
And again that will all happen automatically

54
00:02:39.578 --> 00:02:41.290
and out of the box

55
00:02:41.290 --> 00:02:43.393
Babel will convert all features

56
00:02:43.393 --> 00:02:46.924
So only browsers that are barely used anymore

57
00:02:46.924 --> 00:02:51.463
with the market share of less than 0.25%

58
00:02:51.463 --> 00:02:53.530
are not going to be supported

59
00:02:53.530 --> 00:02:56.863
by the transpiling with this preset here.

60
00:02:58.180 --> 00:03:00.690
So, that's a very brief overview

61
00:03:00.690 --> 00:03:04.340
and we will come back here in a second

62
00:03:04.340 --> 00:03:09.336
but for now let's start on NPM run start script again

63
00:03:09.336 --> 00:03:14.336
just so we can take a look again at our final output.

64
00:03:15.780 --> 00:03:17.340
So the one we have right now

65
00:03:19.051 --> 00:03:21.050
or we had before was decompressed one

66
00:03:21.050 --> 00:03:23.003
which was not really helpful.

67
00:03:23.900 --> 00:03:28.423
And so now the script is ads, this one so F30.

68
00:03:30.120 --> 00:03:31.230
So this one

69
00:03:32.140 --> 00:03:36.860
and we can see right away that ES6 is no longer there.

70
00:03:36.860 --> 00:03:38.140
So here we have var

71
00:03:39.112 --> 00:03:41.383
instead of const that we had before.

72
00:03:42.580 --> 00:03:44.453
Let's see if we have something else.

73
00:03:45.620 --> 00:03:47.080
So here we used to have

74
00:03:47.080 --> 00:03:49.510
a template literal i believe

75
00:03:50.820 --> 00:03:53.550
and this was now converted to again

76
00:03:53.550 --> 00:03:58.270
regular ES5 code by using this concat method.

77
00:03:58.270 --> 00:04:01.860
So everything that we used from ES6 is now gone

78
00:04:03.220 --> 00:04:06.300
but now let me show you something important.

79
00:04:06.300 --> 00:04:08.210
So let's write some code here

80
00:04:08.210 --> 00:04:12.130
which is basically not part of this preset here

81
00:04:12.130 --> 00:04:14.060
because this preset ENF

82
00:04:14.060 --> 00:04:17.260
does actually only include final features.

83
00:04:17.260 --> 00:04:20.380
So features that are already part of the language

84
00:04:20.380 --> 00:04:24.340
after passing the four stages of the AGMA process.

85
00:04:24.340 --> 00:04:27.700
However, previously we used class fields

86
00:04:27.700 --> 00:04:31.620
which at the time of recording are only at stage three.

87
00:04:31.620 --> 00:04:33.480
And so let me show you how we could

88
00:04:34.390 --> 00:04:36.720
transpile a class fields as well.

89
00:04:36.720 --> 00:04:39.483
So let's just write a simple example here.

90
00:04:40.870 --> 00:04:44.860
And so here Iam going to use a field called greeting

91
00:04:44.860 --> 00:04:46.853
which I'm going to set to Hey,

92
00:04:48.640 --> 00:04:50.850
and then just a normal constructor

93
00:04:50.850 --> 00:04:55.253
which takes a name, this.name equals the name.

94
00:04:56.840 --> 00:04:59.500
And then as the constructor is run,

95
00:04:59.500 --> 00:05:01.760
it will simply log to the console

96
00:05:01.760 --> 00:05:05.270
this.greeting and then the name.

97
00:05:05.270 --> 00:05:07.423
So like, Hey Jonas.

98
00:05:09.070 --> 00:05:14.053
So const Jonas is a new person Jonas.

99
00:05:16.340 --> 00:05:19.130
But now let's see what happens here

100
00:05:19.130 --> 00:05:21.373
and we should get some kind of error.

101
00:05:22.600 --> 00:05:23.593
So let's see.

102
00:05:24.560 --> 00:05:28.160
Oh, and apparently it does work now

103
00:05:28.160 --> 00:05:31.680
when i last tested it, it didn't work

104
00:05:31.680 --> 00:05:33.090
so let's make this private

105
00:05:33.090 --> 00:05:36.290
maybe then we get the error i was expecting

106
00:05:37.360 --> 00:05:40.940
but actually no, everything is working great.

107
00:05:40.940 --> 00:05:45.520
Let me just search our code here for person.

108
00:05:45.520 --> 00:05:46.810
And so here you can see

109
00:05:46.810 --> 00:05:51.810
that the person class has nicely been converted to ES5.

110
00:05:52.910 --> 00:05:56.630
So the class keyword is nowhere to be found anymore.

111
00:05:56.630 --> 00:05:57.843
And then our entire code

112
00:05:57.843 --> 00:06:02.843
that we had here was basically converted to this, all right?

113
00:06:03.190 --> 00:06:05.996
And so therefore there's actually no more need

114
00:06:05.996 --> 00:06:08.140
for what I was going to show you

115
00:06:09.000 --> 00:06:10.660
which we had to do before

116
00:06:10.660 --> 00:06:11.980
which was to include

117
00:06:11.980 --> 00:06:16.980
this a plugin here for the class properties

118
00:06:18.580 --> 00:06:22.690
because this is still an experimental feature.

119
00:06:22.690 --> 00:06:27.690
And so yeah, we had to manually include this plugin here

120
00:06:27.730 --> 00:06:29.870
in order to make this code work

121
00:06:29.870 --> 00:06:32.150
but now that's no longer necessary.

122
00:06:32.150 --> 00:06:35.630
And so that makes this even more amazing

123
00:06:35.630 --> 00:06:38.150
but let's try another experimental one

124
00:06:38.150 --> 00:06:41.470
for example, this knowledge coalescing operator

125
00:06:41.470 --> 00:06:46.340
which is still also a bit more on the experimental side.

126
00:06:46.340 --> 00:06:51.340
So let's say Jonah's or null, let's say.

127
00:06:54.600 --> 00:06:57.300
And so that actually works as well.

128
00:06:57.300 --> 00:06:59.340
Okay great.

129
00:06:59.340 --> 00:07:01.290
Now there's still two more things

130
00:07:01.290 --> 00:07:03.810
that I need to show you here still.

131
00:07:03.810 --> 00:07:05.983
And so let's write some more code here.

132
00:07:07.190 --> 00:07:10.310
So what I will do now is to use the ES6 find method

133
00:07:10.310 --> 00:07:13.690
to find products in a cart

134
00:07:13.690 --> 00:07:17.060
that are edit more than twice.

135
00:07:17.060 --> 00:07:19.803
So that's I believe just cart.

136
00:07:20.780 --> 00:07:24.180
So cart.find

137
00:07:24.180 --> 00:07:26.970
because remember this is an ES6 method

138
00:07:29.330 --> 00:07:34.330
and then return.quantity where it's greater or equal to.

139
00:07:37.520 --> 00:07:39.833
And so that is only the pizza here.

140
00:07:41.190 --> 00:07:44.040
So you see, well

141
00:07:44.890 --> 00:07:49.743
maybe this isn't a cart, let's see what's happening.

142
00:07:52.020 --> 00:07:53.313
Oh but never mind.

143
00:07:54.530 --> 00:07:55.910
This is not filter.

144
00:07:55.910 --> 00:07:58.880
It is just find, so it will simply find

145
00:07:58.880 --> 00:08:01.340
the first element, right?

146
00:08:01.340 --> 00:08:02.730
And so this is the first element

147
00:08:02.730 --> 00:08:06.380
where the quantity is greater to.

148
00:08:06.380 --> 00:08:08.950
But anyway, what I want to show you here

149
00:08:08.950 --> 00:08:12.513
is that well let me show it to you actually first.

150
00:08:13.560 --> 00:08:16.720
So to find this code here in this other script

151
00:08:16.720 --> 00:08:21.040
I will copy this part and then put it here.

152
00:08:21.040 --> 00:08:25.500
And so you'll see that here is basically that same code.

153
00:08:25.500 --> 00:08:28.070
So the arrow function that we had is gone

154
00:08:28.070 --> 00:08:31.750
and it was replaced by this regular function.

155
00:08:31.750 --> 00:08:36.420
However, the ES6 method find is still here.

156
00:08:36.420 --> 00:08:39.313
So it has not been converted to ES5.

157
00:08:40.200 --> 00:08:43.200
Now the same is too for other things

158
00:08:43.200 --> 00:08:45.623
for example, let's try promises.

159
00:08:46.550 --> 00:08:50.290
So promise.resolve

160
00:08:50.290 --> 00:08:51.720
So we're creating an immediately

161
00:08:51.720 --> 00:08:56.073
resolved promise to make this really a quick example.

162
00:08:59.080 --> 00:09:01.520
And let's just log X to the console

163
00:09:02.410 --> 00:09:03.910
and so that works

164
00:09:03.910 --> 00:09:08.110
but it works because our browser understands ES6

165
00:09:09.100 --> 00:09:11.360
because if we take a look here now

166
00:09:11.360 --> 00:09:15.420
then promise is also not converted to ES5.

167
00:09:15.420 --> 00:09:18.700
So remember promise is an ES6 feature

168
00:09:18.700 --> 00:09:22.990
but again, it was not converted back to ES5

169
00:09:22.990 --> 00:09:24.680
and the reason for that is that

170
00:09:24.680 --> 00:09:29.330
Babel can actually only transpile ES6 Syntax.

171
00:09:29.330 --> 00:09:31.950
So data things like arrow functions,

172
00:09:31.950 --> 00:09:36.540
classes, const, or the spread operator.

173
00:09:36.540 --> 00:09:38.450
So these are basically things

174
00:09:38.450 --> 00:09:42.880
that have an equivalent way of writing them in ES5.

175
00:09:42.880 --> 00:09:45.100
So for example the arrow function,

176
00:09:45.100 --> 00:09:47.470
it is simply a different syntax.

177
00:09:47.470 --> 00:09:51.153
And so Babel can simply write function instead of data.

178
00:09:52.110 --> 00:09:54.730
And the same goes with const.

179
00:09:54.730 --> 00:09:57.970
So it's very easy to simply convert that to VAR

180
00:09:57.970 --> 00:10:01.400
but the same is not true for real new features

181
00:10:01.400 --> 00:10:03.280
that were added to the language

182
00:10:03.280 --> 00:10:05.720
like find and promise.

183
00:10:05.720 --> 00:10:08.410
So these new additions to the language

184
00:10:08.410 --> 00:10:12.740
so these new features, they can simply not be transpiled.

185
00:10:12.740 --> 00:10:14.730
It's simply not possible.

186
00:10:14.730 --> 00:10:19.470
Only syntax is easy to convert, so easy to compile.

187
00:10:19.470 --> 00:10:23.120
However, all hope is not lost.

188
00:10:23.120 --> 00:10:25.500
So for these added features

189
00:10:25.500 --> 00:10:29.060
again, such as promises or all the array methods

190
00:10:29.060 --> 00:10:32.870
like finds and really a bunch of other stuff,

191
00:10:32.870 --> 00:10:34.790
we can polyfill them.

192
00:10:34.790 --> 00:10:37.090
And so that's why since the beginning

193
00:10:37.090 --> 00:10:41.450
I've always been saying transpiling and polyfilling.

194
00:10:41.450 --> 00:10:44.923
So these new features, we have to polyfill them.

195
00:10:46.470 --> 00:10:48.620
Now Babel used to do polyfilling

196
00:10:48.620 --> 00:10:50.740
out of the box some time ago

197
00:10:50.740 --> 00:10:53.290
but recently they started to simply

198
00:10:53.290 --> 00:10:55.450
recommending another library.

199
00:10:55.450 --> 00:10:58.723
And so we now have to manually import data as well.

200
00:10:59.580 --> 00:11:04.580
So import Core-js so that's the name of the library.

201
00:11:06.240 --> 00:11:10.070
And then we usually only want to import a part

202
00:11:10.070 --> 00:11:13.880
of that library and that's called Stable.

203
00:11:13.880 --> 00:11:16.160
And so we can write this.

204
00:11:16.160 --> 00:11:17.540
Okay.

205
00:11:17.540 --> 00:11:20.490
Now usually we have to install

206
00:11:20.490 --> 00:11:22.280
all of the packages first

207
00:11:22.280 --> 00:11:24.330
but fortunately parcel is smart

208
00:11:24.330 --> 00:11:27.400
enough to install this automatically.

209
00:11:27.400 --> 00:11:29.963
Well at least that is how it should be.

210
00:11:31.510 --> 00:11:33.780
So maybe that doesn't work after all

211
00:11:34.780 --> 00:11:37.913
so let's manually install it, but that's weird.

212
00:11:39.780 --> 00:11:41.153
So core-js.

213
00:11:43.500 --> 00:11:44.563
So let's see.

214
00:11:46.600 --> 00:11:48.100
And so here we go.

215
00:11:48.100 --> 00:11:51.090
So let's re-save it.

216
00:11:51.090 --> 00:11:52.083
And so here we go.

217
00:11:53.440 --> 00:11:54.810
Okay.

218
00:11:54.810 --> 00:11:56.308
So you should probably

219
00:11:56.308 --> 00:11:59.460
also try to install core-js manually

220
00:11:59.460 --> 00:12:02.790
and then you will able to use it like this.

221
00:12:02.790 --> 00:12:04.630
So maybe you're starting to see

222
00:12:04.630 --> 00:12:07.920
that D things really change all the time.

223
00:12:07.920 --> 00:12:10.376
And so, hi, I'm even confused myself sometimes

224
00:12:10.376 --> 00:12:13.590
on why certain things used to work

225
00:12:13.590 --> 00:12:15.800
and now they work differently.

226
00:12:15.800 --> 00:12:16.910
But the good thing is

227
00:12:16.910 --> 00:12:20.160
that you don't really have to understand all this.

228
00:12:20.160 --> 00:12:22.860
So this is really more like a recipe

229
00:12:22.860 --> 00:12:24.200
that you just need to follow.

230
00:12:24.200 --> 00:12:28.260
And then with time it will all become like a routine

231
00:12:28.260 --> 00:12:30.190
and it will become simple.

232
00:12:30.190 --> 00:12:32.960
But anyway, let's go back to our code

233
00:12:32.960 --> 00:12:36.710
but you will notice that's the code we had before

234
00:12:36.710 --> 00:12:39.550
is actually still there.

235
00:12:39.550 --> 00:12:40.900
So it's still the same

236
00:12:40.900 --> 00:12:45.190
and promise and find have not been replaced.

237
00:12:45.190 --> 00:12:47.900
And that's because that's simply not the way

238
00:12:47.900 --> 00:12:49.770
it's supposed to work.

239
00:12:49.770 --> 00:12:52.430
So instead what polyfilling does

240
00:12:52.430 --> 00:12:55.730
is to basically recreate defined function

241
00:12:55.730 --> 00:12:58.100
and to make it available in this bundle

242
00:12:58.100 --> 00:13:00.103
so that the codes can then use it.

243
00:13:01.137 --> 00:13:05.338
`So let's search for array.prototype

244
00:13:05.338 --> 00:13:09.570
which remember, is where all the array methods are put.

245
00:13:09.570 --> 00:13:13.274
So array.prototype.find.

246
00:13:13.274 --> 00:13:17.223
And so, well here it is.

247
00:13:18.940 --> 00:13:22.810
So Babel then uses this weird create methods.

248
00:13:22.810 --> 00:13:24.530
But what matters here is that

249
00:13:24.530 --> 00:13:28.290
this will basically implement array prototype find

250
00:13:28.290 --> 00:13:30.270
and the same for find index,

251
00:13:30.270 --> 00:13:35.270
every some filter map and also for each

252
00:13:36.750 --> 00:13:40.010
even though these less ones here are not ES6

253
00:13:40.010 --> 00:13:42.973
but for some reason they are still polyfilled here.

254
00:13:44.706 --> 00:13:48.056
Oh right? And the same for promise, probably.

255
00:13:48.056 --> 00:13:50.683
Well not probably for sure.

256
00:13:51.980 --> 00:13:54.500
Otherwise this is not going to work

257
00:13:55.860 --> 00:13:58.660
and it's not easy to find it

258
00:13:58.660 --> 00:14:02.300
but well, here's the definition of promise

259
00:14:02.300 --> 00:14:04.800
which is going to be global promise

260
00:14:04.800 --> 00:14:08.240
but I'm not gonna dig even deeper into this.

261
00:14:08.240 --> 00:14:10.820
That's just not really necessary.

262
00:14:10.820 --> 00:14:13.050
However, as you just saw before

263
00:14:13.050 --> 00:14:16.600
the polyfilling is going to polyfill everything

264
00:14:16.600 --> 00:14:18.630
even if we don't need it.

265
00:14:18.630 --> 00:14:22.090
So we had to D find index method there as well.

266
00:14:22.090 --> 00:14:24.290
Let's actually go back there.

267
00:14:24.290 --> 00:14:27.157
So array.prototype.find

268
00:14:30.380 --> 00:14:35.050
So it also created find index and every, and some

269
00:14:35.050 --> 00:14:37.660
and so we are actually not even using these.

270
00:14:37.660 --> 00:14:38.970
And so if we wanted

271
00:14:38.970 --> 00:14:40.950
we could cherry pick basically

272
00:14:40.950 --> 00:14:44.410
just the features that we actually want to polyfill.

273
00:14:44.410 --> 00:14:46.800
Now that of course is a lot of work

274
00:14:46.800 --> 00:14:50.400
but it will also greatly reduce the bundle size.

275
00:14:50.400 --> 00:14:52.170
And so it might be worth it

276
00:14:52.170 --> 00:14:54.180
if that's really a concern.

277
00:14:54.180 --> 00:14:56.103
So we could instead of this.

278
00:14:56.990 --> 00:14:59.840
So instead of basically importing everything there is

279
00:15:00.790 --> 00:15:05.780
we can just say core-js stable and then only array

280
00:15:07.790 --> 00:15:10.513
and then find like this.

281
00:15:12.840 --> 00:15:14.810
So now if we go back here,

282
00:15:14.810 --> 00:15:19.528
then, well then only this one should be here.

283
00:15:19.528 --> 00:15:22.350
(indistinct) It looks different now.

284
00:15:22.350 --> 00:15:25.750
And so probably only this one was not polyfilled

285
00:15:26.869 --> 00:15:30.420
At the same you could do for a promise

286
00:15:31.503 --> 00:15:35.580
like this okay.

287
00:15:35.580 --> 00:15:37.150
So that's going to be a lot of work

288
00:15:37.150 --> 00:15:38.820
which we usually don't do

289
00:15:38.820 --> 00:15:41.930
but it is possible again if you are really worried

290
00:15:41.930 --> 00:15:43.393
about your bundle size.

291
00:15:44.680 --> 00:15:47.613
Finally, just to finish there is still one feature

292
00:15:47.613 --> 00:15:51.730
that is not polyfilled by this one here.

293
00:15:51.730 --> 00:15:55.020
And so we always need to install

294
00:15:55.020 --> 00:15:57.120
just one more package

295
00:15:57.120 --> 00:16:02.120
which is called NPM install regenerator-runtime.

296
00:16:04.530 --> 00:16:08.040
So regenerator.That's correct.

297
00:16:08.040 --> 00:16:13.040
So let's see, let's already include it here.

298
00:16:15.060 --> 00:16:20.060
So we need import, so regenerator-runtime/runtime like this.

299
00:16:22.820 --> 00:16:27.820
Alright? So this here is for polyfilling async functions.

300
00:16:31.100 --> 00:16:33.800
So again, it probably looks a bit confusing

301
00:16:33.800 --> 00:16:38.070
that we have to do all of this, but yeah, don't worry.

302
00:16:38.070 --> 00:16:41.080
It's just a recipe that you have to follow.

303
00:16:41.080 --> 00:16:43.550
Okay. And usually you would put

304
00:16:43.550 --> 00:16:46.890
these imports here right at the top of your file

305
00:16:46.890 --> 00:16:49.460
but in this case, we can just leave them here

306
00:16:49.460 --> 00:16:52.483
because they will be hosted anyway, right?

307
00:16:53.320 --> 00:16:56.420
Also keep in mind that all of this might change.

308
00:16:56.420 --> 00:16:58.220
And so if you're watching this video

309
00:16:58.220 --> 00:17:00.200
like in two years from now,

310
00:17:00.200 --> 00:17:02.150
then things might be different

311
00:17:02.150 --> 00:17:04.740
and things might not work the same.

312
00:17:04.740 --> 00:17:06.870
And so once again make sure

313
00:17:06.870 --> 00:17:08.410
that you then install

314
00:17:08.410 --> 00:17:11.220
exactly the same versions as I have here

315
00:17:11.220 --> 00:17:16.220
especially this core-js and regenerator-runtime.

316
00:17:16.640 --> 00:17:19.230
And of course, also parcel.

317
00:17:19.230 --> 00:17:22.343
So just as I told you in the last video.

318
00:17:24.110 --> 00:17:25.150
Now okay.

319
00:17:25.150 --> 00:17:28.270
And with this, we're actually done with this video

320
00:17:28.270 --> 00:17:33.090
and also with learning about Modern JavaScript Development.

321
00:17:33.090 --> 00:17:36.340
So basically with learning about Tooling,

322
00:17:36.340 --> 00:17:41.340
such as parcel and babel and also about modules.

323
00:17:41.400 --> 00:17:44.020
Now in the remainder of this section,

324
00:17:44.020 --> 00:17:45.680
so the next two videos

325
00:17:45.680 --> 00:17:47.700
we will just quickly also talk

326
00:17:47.700 --> 00:17:50.260
about modern JavaScript coding.

327
00:17:50.260 --> 00:17:53.800
So more on the actual programming side of things.

328
00:17:53.800 --> 00:17:57.640
And so there we will learn or actually more review

329
00:17:57.640 --> 00:18:00.703
how to write clean and modern JavaScript code.

