1 00:00:00,230 --> 00:00:04,090 Now that you know more about how EcmaScript came about, how JavaScript 2 00:00:04,090 --> 00:00:08,271 evolved, and who decides on what features get added to the language, let's 3 00:00:08,271 --> 00:00:12,804 talk about the different types or flavors of JavaScript available to developers. 4 00:00:12,804 --> 00:00:16,993 You'll often hear terms like Vanilla JavaScript, Plain, or Pure JavaScript. 5 00:00:16,993 --> 00:00:20,875 They all mean the same thing, the use of JavaScript without any frameworks or 6 00:00:20,875 --> 00:00:21,790 libraries. 7 00:00:21,790 --> 00:00:25,700 It's how developers refer to native, standards-based JavaScript. 8 00:00:25,700 --> 00:00:30,870 You learn that ES5, or ECMAScript 5, is an earlier version of JavaScript 9 00:00:30,870 --> 00:00:36,900 that's implemented in all browsers, and ES2015 is the evolution of ES5. 10 00:00:36,900 --> 00:00:40,190 It's now the established standard for writing modern JavaScript. 11 00:00:40,190 --> 00:00:45,160 Now after the release of ES 2015 the TC39 Committee 12 00:00:45,160 --> 00:00:48,460 decided to iterate more often and consistently. 13 00:00:48,460 --> 00:00:54,450 So as of 2016 the JavaScript language has continued to evolve year after year, 14 00:00:54,450 --> 00:00:56,550 with smaller releases of the language. 15 00:00:56,550 --> 00:01:00,276 A new version of ECMAScript gets released every year with any new features that 16 00:01:00,276 --> 00:01:02,210 are ready at that time. 17 00:01:02,210 --> 00:01:06,780 The feature versions are referred to as ES2016, ES2017, 18 00:01:06,780 --> 00:01:11,880 and ESNext for versions of ECMAScript that have not been released. 19 00:01:11,880 --> 00:01:16,454 JavaScript also comes in other non-vanilla forms, like a Type Checker, for example. 20 00:01:16,454 --> 00:01:20,398 Developers use type checking languages in libraries like TypeScript and 21 00:01:20,398 --> 00:01:24,530 Flow in favor of pure JavaScript, because they help catch mistakes early and 22 00:01:24,530 --> 00:01:28,510 identify certain types of problems before they run their code. 23 00:01:28,510 --> 00:01:32,960 TypeScript, developed by Microsoft, is a super set of JavaScript, 24 00:01:32,960 --> 00:01:37,980 meaning it's a layer around JavaScript that contains extra features and syntax. 25 00:01:37,980 --> 00:01:42,110 TypeScript also offers support for the latest evolving JavaScript features 26 00:01:42,110 --> 00:01:44,800 while making your code more readable and descriptive. 27 00:01:44,800 --> 00:01:48,470 The browser cannot understand a file written in TypeScript, so 28 00:01:48,470 --> 00:01:50,760 TypeScript needs to get translated or 29 00:01:50,760 --> 00:01:54,960 compiled to standard JavaScript code that can run on any browser. 30 00:01:54,960 --> 00:01:59,090 And Flow, develop by Facebook, is an open source type checking library that 31 00:01:59,090 --> 00:02:01,530 makes developing apps more maintainable, and 32 00:02:01,530 --> 00:02:05,700 performs error checking to make it harder to introduce bugs in your code. 33 00:02:05,700 --> 00:02:09,240 Flow gives you realtime feedback on the state of your code. 34 00:02:09,240 --> 00:02:13,290 For example, it checks the expected data type of any value, like 35 00:02:13,290 --> 00:02:17,650 if the return type of a function should be a number, string, or boolean, and more. 36 00:02:17,650 --> 00:02:18,550 Other languages and 37 00:02:18,550 --> 00:02:22,845 types of JavaScript that use a different syntax are CoffeeScript and Dart. 38 00:02:22,845 --> 00:02:28,170 CoffeeScript is a simple language that adds syntactic sugar to JavaScript, 39 00:02:28,170 --> 00:02:31,980 which means that it was designed to make JavaScript easier to read in Express, 40 00:02:31,980 --> 00:02:33,685 with a clear and concise syntax. 41 00:02:33,685 --> 00:02:36,770 CoffeeScript is not understood by browsers, so 42 00:02:36,770 --> 00:02:40,110 it also gets compiled to standard JavaScript, and 43 00:02:40,110 --> 00:02:44,070 Dart is an object-oriented programming language developed by Google. 44 00:02:44,070 --> 00:02:47,500 Developers use Dart to create complex and highly scalable apps for 45 00:02:47,500 --> 00:02:52,400 the Web, mobile devices, and for Internet of things or IoT devices. 46 00:02:52,400 --> 00:02:54,937 Dart was even approved as a standard by Ecma. 47 00:02:54,937 --> 00:02:56,227 Like JavaScript, 48 00:02:56,227 --> 00:03:00,950 Ecma International formed a technical committee to work on standardizing Dart. 49 00:03:00,950 --> 00:03:05,270 While Dart uses a special syntax that's different than pure JavaScript, 50 00:03:05,270 --> 00:03:08,260 it can be translated to standard JavaScript to be used in a browser. 51 00:03:09,340 --> 00:03:12,750 I just wanted to mention the different types of JavaScript here so 52 00:03:12,750 --> 00:03:17,480 that if you come across terms like ES5, ES2015, TypeScript or 53 00:03:17,480 --> 00:03:20,730 CoffeeScript you will know that it's all just referring to JavaScript.