title
Kotlin Tutorial

description
Get the Code Here : https://goo.gl/nGibOC Subscribe to Me: http://bit.ly/2FWQZTx Best Kotlin Book : http://amzn.to/2qT2d53 Kotlin is a fantastic language that improves greatly upon Java and at the same time can use all Java libraries and frameworks. It provides both the power of OOP and functional programming. It is quickly becoming the language of choice for developing Android apps. In this video I will cover what you'd learn about the core syntax of Kotlin in a 300 page book all in one video. MY UDEMY COURSES ARE 87.5% OFF TIL January 8th ($9.99) ➡️ Python Data Science Series for $9.99 : Highest Rated & Largest Python Udemy Course + 56 Hrs + 200 Videos + Data Science https://bit.ly/Master_Python_43 ➡️ C++ Programming Bootcamp Series for $9.99 : Over 23 Hrs + 53 Videos + Quizzes + Graded Assignments + New Videos Every Month https://bit.ly/C_Course_43 ➡️ FREE 15 hour Golang Course!!! : https://bit.ly/go-tutorial4 (100 Available) 00:30 MacOS Install 02:49 Windows Install 04:30 Data Types 12:07 Casting 13:45 Strings 20:43 Arrays 25:52 Ranges 29:54 Conditionals 30:24 If 32:21 When 34:02 For 35:18 While 40:23 Functions 50:44 Higher Order Functions 56:40 Collection Operators 1:01:00 Exception Handling 1:03:05 Lists 1:08:00 Maps 1:10:50 Classes 1:16:00 Inheritance 1:18:12 Interfaces 1:22:22 Null Safety Like the channel? Consider becoming a Patreon! Check it out here: ►► https://www.patreon.com/derekbanas *Watch More Learn in One Videos* ►► Java - https://youtu.be/n-xAqcBCws4 ►► C++ - https://youtu.be/Rub-JsjMhWY ►► Python - https://youtu.be/N4mEzFDjqtA ►► MySQL - https://youtu.be/yPu6qV5byu4 ►► PHP - https://youtu.be/7TF00hJI78Y ►► Kotlin - https://youtu.be/H_oGi8uuDpA ►► C# - https://youtu.be/lisiwUZJXqQ ►► JavaScript - https://youtu.be/fju9ii8YsGs

detail
{'title': 'Kotlin Tutorial', 'heatmap': [{'end': 4925.881, 'start': 4869.919, 'weight': 1}], 'summary': 'Tutorial covers core kotlin syntax equivalent to a standard 250-300 page book, including setup guidance for intellij idea and java development kit on windows, variables, data types, strings, arrays, conditional operators, loops, random numbers, functions, tail recursion, higher order functions, collection operators, exception handling, and kotlin programming concepts like maps, classes, regular expressions, object inheritance, interfaces, and null safety, delivered with practical examples and clear explanations.', 'chapters': [{'end': 287.889, 'segs': [{'end': 27.988, 'src': 'embed', 'start': 0.543, 'weight': 0, 'content': [{'end': 3.484, 'text': 'Well hello internet and welcome to my Kotlin video tutorial.', 'start': 0.543, 'duration': 2.941}, {'end': 8.884, 'text': "In this one tutorial I'm going to cover pretty much what you would find in a standard 250-300 page book on Kotlin,", 'start': 3.524, 'duration': 5.36}, {'end': 11.245, 'text': 'which means the core syntax of the entire language.', 'start': 8.884, 'duration': 2.361}, {'end': 16.446, 'text': 'And, like always, in the description underneath the video is a link to all of the code from this video,', 'start': 11.565, 'duration': 4.881}, {'end': 21.447, 'text': 'as well as timestamps to all the individual parts of the video, so you can watch whatever you want,', 'start': 16.446, 'duration': 5.001}, {'end': 23.687, 'text': 'or watch part of the video and come back to it or do whatever.', 'start': 21.447, 'duration': 2.24}, {'end': 27.988, 'text': "And also I'm going to show you how to install everything you're going to need to complete this video.", 'start': 23.907, 'duration': 4.081}], 'summary': 'Kotlin video tutorial covering core syntax, equivalent to 250-300 page book.', 'duration': 27.445, 'max_score': 0.543, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA543.jpg'}, {'end': 94.002, 'src': 'embed', 'start': 52.076, 'weight': 1, 'content': [{'end': 57.678, 'text': "Then you're going to need to go to JetBrains.com IDEA and download.", 'start': 52.076, 'duration': 5.602}, {'end': 63.121, 'text': "And more specifically, whether you're on Windows or Mac OS, we're going to be using the free community version.", 'start': 58.059, 'duration': 5.062}, {'end': 64.422, 'text': "So you're going to click on Download.", 'start': 63.201, 'duration': 1.221}, {'end': 68.483, 'text': "And if you're on Mac OS, you're going to see this little guy pop up down here, DMG.", 'start': 64.702, 'duration': 3.781}, {'end': 69.744, 'text': 'Click on Open.', 'start': 68.543, 'duration': 1.201}, {'end': 72.005, 'text': "And then you're going to the folder that opens.", 'start': 70.004, 'duration': 2.001}, {'end': 78.068, 'text': "You're going to grab the IntelliJ application and drop it in your Applications folder.", 'start': 72.025, 'duration': 6.043}, {'end': 80.25, 'text': "And then whenever you do that, this guy's going to open up.", 'start': 78.388, 'duration': 1.862}, {'end': 83.573, 'text': "You're going to decide if you want a white interface or a dark interface.", 'start': 80.27, 'duration': 3.303}, {'end': 89.218, 'text': "Click on Key Maps and click on I've never used IDEA and click on Launcher Script.", 'start': 83.613, 'duration': 5.605}, {'end': 94.002, 'text': 'Check mark inside of here and click on Default Plugins and all this is fine.', 'start': 89.498, 'duration': 4.504}], 'summary': 'Download intellij idea from jetbrains.com, use community version for windows or mac os, customize settings', 'duration': 41.926, 'max_score': 52.076, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA52076.jpg'}, {'end': 144.833, 'src': 'embed', 'start': 114.456, 'weight': 4, 'content': [{'end': 116.397, 'text': 'This is automatically going to open up like this.', 'start': 114.456, 'duration': 1.941}, {'end': 123.382, 'text': "You're going to click on Project SDK and you're going to click on this guy and go and find whatever JVM you want to use.", 'start': 116.417, 'duration': 6.965}, {'end': 125.303, 'text': 'Come down here, click on Finish.', 'start': 123.702, 'duration': 1.601}, {'end': 127.164, 'text': 'Whenever you do, this is going to open up.', 'start': 125.683, 'duration': 1.481}, {'end': 132.847, 'text': "You're going to come over to your source directory, right? Click on it, click on new and then Kotlin file class.", 'start': 127.304, 'duration': 5.543}, {'end': 135.068, 'text': "This guy's going to pop up inside of here.", 'start': 133.267, 'duration': 1.801}, {'end': 135.888, 'text': 'Give it a name.', 'start': 135.128, 'duration': 0.76}, {'end': 137.369, 'text': 'I called mine Kotlin Tut again.', 'start': 135.948, 'duration': 1.421}, {'end': 138.169, 'text': 'Call it whatever you want.', 'start': 137.409, 'duration': 0.76}, {'end': 139.15, 'text': 'Click on OK.', 'start': 138.249, 'duration': 0.901}, {'end': 144.833, 'text': "And then you're going to type the simple hello world script inside here just to verify everything works.", 'start': 139.45, 'duration': 5.383}], 'summary': 'Setting up a kotlin project, creating a kotlin file, and running a hello world script.', 'duration': 30.377, 'max_score': 114.456, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA114456.jpg'}, {'end': 285.207, 'src': 'embed', 'start': 257.422, 'weight': 2, 'content': [{'end': 263.109, 'text': "By the way, here is the simple Hello World application I'm going to use to verify that everything is installed properly.", 'start': 257.422, 'duration': 5.687}, {'end': 266.714, 'text': "And after you run it, you're going to see down here that Hello World prints out.", 'start': 263.51, 'duration': 3.204}, {'end': 267.274, 'text': 'All right.', 'start': 266.954, 'duration': 0.32}, {'end': 270.537, 'text': 'So now you have Kotlin and IntelliJ and all that stuff installed.', 'start': 267.314, 'duration': 3.223}, {'end': 271.978, 'text': "Now let's start writing some code.", 'start': 270.577, 'duration': 1.401}, {'end': 272.858, 'text': 'All right.', 'start': 272.418, 'duration': 0.44}, {'end': 276.141, 'text': "So this should all look familiar because that's exactly what you have here.", 'start': 272.878, 'duration': 3.263}, {'end': 279.283, 'text': 'Oh, by the way, everybody always asks me how did I get this from the bottom to the right?', 'start': 276.241, 'duration': 3.042}, {'end': 285.207, 'text': "You're going to right, click on it like that, and you're going to click on, move to, and you're going to go top, left, bottom or right.", 'start': 279.303, 'duration': 5.904}], 'summary': 'Demonstration of hello world application in kotlin using intellij.', 'duration': 27.785, 'max_score': 257.422, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA257422.jpg'}], 'start': 0.543, 'title': 'Setting up kotlin and intellij on windows', 'summary': 'Covers the core syntax of kotlin equivalent to a standard 250-300 page book, provides guidance on installing necessary software, including java development kit and intellij idea, and demonstrates creating and running a kotlin project. it also discusses the process of setting up kotlin and intellij on a windows computer, including downloading and installing intellij, creating a new project, running a hello world application, and customizing the ide layout.', 'chapters': [{'end': 151.316, 'start': 0.543, 'title': 'Kotlin tutorial & setup', 'summary': 'Covers the core syntax of kotlin equivalent to a standard 250-300 page book, provides guidance on installing necessary software, including java development kit and intellij idea, and demonstrates creating and running a kotlin project.', 'duration': 150.773, 'highlights': ['The chapter covers the core syntax of Kotlin equivalent to a standard 250-300 page book This tutorial comprehensively covers the core syntax of Kotlin, providing a similar level of content as a standard 250-300 page book.', 'Provides guidance on installing necessary software, including Java Development Kit and IntelliJ IDEA Instructions are given on how to install essential software such as the Java Development Kit and IntelliJ IDEA, emphasizing the importance of these tools for completing the tutorial.', "Demonstrates creating and running a Kotlin project Step-by-step guidance is provided on creating and running a Kotlin project, including selecting project SDK, creating a Kotlin file class, and running a simple 'hello world' script to verify functionality."]}, {'end': 287.889, 'start': 151.536, 'title': 'Setting up kotlin and intellij on windows', 'summary': 'Discusses the process of setting up kotlin and intellij on a windows computer, including downloading and installing intellij, creating a new project, running a hello world application, and customizing the ide layout.', 'duration': 136.353, 'highlights': ['The process of setting up Kotlin and IntelliJ on a Windows computer is explained, including downloading and installing IntelliJ. Downloading IntelliJ from jetbrains.com and following the installation steps as demonstrated.', 'Creating a new project in IntelliJ and selecting the Kotlin JVM option with a specified SDK version. Selecting the Kotlin JVM option, specifying the SDK version (e.g., version 1.8), and creating a new project with a name.', 'Running a Hello World application to verify proper installation, and demonstrating how to run the code in IntelliJ. Running the Hello World application, verifying the successful output, and executing the code in IntelliJ.', 'Customizing the layout of IntelliJ by moving the code editor to different positions (e.g., from bottom to right). Demonstrating how to customize the layout by moving the code editor to different positions within the IntelliJ interface.']}], 'duration': 287.346, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA543.jpg', 'highlights': ['The chapter covers the core syntax of Kotlin equivalent to a standard 250-300 page book.', 'Provides guidance on installing necessary software, including Java Development Kit and IntelliJ IDEA.', 'Demonstrates creating and running a Kotlin project.', 'The process of setting up Kotlin and IntelliJ on a Windows computer is explained, including downloading and installing IntelliJ.', 'Creating a new project in IntelliJ and selecting the Kotlin JVM option with a specified SDK version.', 'Running a Hello World application to verify proper installation, and demonstrating how to run the code in IntelliJ.', 'Customizing the layout of IntelliJ by moving the code editor to different positions (e.g., from bottom to right).']}, {'end': 787.989, 'segs': [{'end': 354.468, 'src': 'embed', 'start': 306.995, 'weight': 0, 'content': [{'end': 310.936, 'text': 'And immutable sometimes referred to as read-only variables.', 'start': 306.995, 'duration': 3.941}, {'end': 315.958, 'text': 'And you create an immutable or an unchangeable variable.', 'start': 311.336, 'duration': 4.622}, {'end': 321.702, 'text': "variable by typing in val, and then let's say name is equal to Derek.", 'start': 316.458, 'duration': 5.244}, {'end': 322.883, 'text': 'Okay, there you go.', 'start': 321.722, 'duration': 1.161}, {'end': 325.404, 'text': 'You just created yourself a read-only variable.', 'start': 323.243, 'duration': 2.161}, {'end': 335.071, 'text': "You could also create mutable variables inside of Kotlin by changing val into variable, and I'll say something like my age is equal to 42.", 'start': 325.585, 'duration': 9.486}, {'end': 339.454, 'text': 'Okay, my name hopefully is never going to change, and my age more than likely will.', 'start': 335.071, 'duration': 4.383}, {'end': 341.796, 'text': 'So that is the difference between those two guys.', 'start': 339.554, 'duration': 2.242}, {'end': 345.019, 'text': 'Now Kotlin uses what is called a type inference.', 'start': 342.156, 'duration': 2.863}, {'end': 350.705, 'text': 'So whenever I put a string inside here, Kotlin knows that this is a string and it refers to it as a string.', 'start': 345.399, 'duration': 5.306}, {'end': 354.468, 'text': "Likewise here, it's going to refer to my age as an integer.", 'start': 350.905, 'duration': 3.563}], 'summary': 'Kotlin supports immutable (val) and mutable (var) variables, with type inference.', 'duration': 47.473, 'max_score': 306.995, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA306995.jpg'}, {'end': 510.553, 'src': 'embed', 'start': 482.057, 'weight': 2, 'content': [{'end': 484.639, 'text': 'You are also going to have longs.', 'start': 482.057, 'duration': 2.582}, {'end': 488.482, 'text': 'And here in a second, I will show you how big or how small a long can be.', 'start': 484.899, 'duration': 3.583}, {'end': 489.823, 'text': "You're going to have doubles.", 'start': 488.502, 'duration': 1.321}, {'end': 492.045, 'text': "You're also going to have floats.", 'start': 490.183, 'duration': 1.862}, {'end': 495.207, 'text': "You're also going to have booleans.", 'start': 492.385, 'duration': 2.822}, {'end': 504.711, 'text': 'Boolean, and as per numbers, you can have shorts, which are going to be 16 bytes, or you can have bytes which are going to be 8 bytes,', 'start': 495.727, 'duration': 8.984}, {'end': 506.072, 'text': "and let's go in here.", 'start': 504.711, 'duration': 1.361}, {'end': 507.912, 'text': "and oh well, also, you'll have characters.", 'start': 506.072, 'duration': 1.84}, {'end': 510.553, 'text': "I'm going to show you examples of all these different guys, though.", 'start': 507.912, 'duration': 2.641}], 'summary': 'Introduction to different data types: longs, doubles, floats, booleans, shorts, bytes, and characters.', 'duration': 28.496, 'max_score': 482.057, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA482057.jpg'}, {'end': 576.755, 'src': 'embed', 'start': 547.882, 'weight': 5, 'content': [{'end': 550.423, 'text': 'And let me go and give you an example of what I mean by that.', 'start': 547.882, 'duration': 2.541}, {'end': 556.204, 'text': "Let's go and create a variable and double num1.", 'start': 550.623, 'duration': 5.581}, {'end': 558.565, 'text': 'And this is going to be a double.', 'start': 557.145, 'duration': 1.42}, {'end': 560.966, 'text': "is equal to, and I'm going to go 1.", 'start': 559.085, 'duration': 1.881}, {'end': 565.669, 'text': "And what you're going to do here is you're going to, with your doubles, you're going to have a precision up to 15 digits.", 'start': 560.966, 'duration': 4.703}, {'end': 568.43, 'text': "So even though they can be gigantic, they're really not.", 'start': 565.729, 'duration': 2.701}, {'end': 572.753, 'text': "So what you want to be aware of is I'm going to go, OK, so there is 15 digits.", 'start': 568.65, 'duration': 4.103}, {'end': 574.053, 'text': "Let's add 16 on there.", 'start': 572.773, 'duration': 1.28}, {'end': 576.755, 'text': "And then we're going to come in here, and we're going to copy that.", 'start': 574.273, 'duration': 2.482}], 'summary': 'Demonstration of handling precision in double variable with 15 digits.', 'duration': 28.873, 'max_score': 547.882, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA547882.jpg'}], 'start': 288.109, 'title': 'Kotlin variables and data types', 'summary': 'Covers kotlin variable introduction, distinguishing between mutable and immutable types, and explains type inference. it also introduces data types like integers, longs, doubles, floats, booleans, characters, and demonstrates precision limitations with doubles. additionally, it explains string interpolation, casting, and the use of the is keyword for type checking in kotlin.', 'chapters': [{'end': 375.91, 'start': 288.109, 'title': 'Introduction to variables in kotlin', 'summary': 'Introduces variables in kotlin, distinguishing between mutable and immutable types, and explains type inference and defining variable types explicitly.', 'duration': 87.801, 'highlights': ['Kotlin uses type inference, allowing it to automatically determine variable types based on the assigned value, increasing code readability and reducing verbosity.', "The chapter explains the distinction between mutable and immutable variables in Kotlin, demonstrating the use of 'val' for immutable and 'var' for mutable variables.", 'The instructor illustrates the process of defining variable types explicitly in Kotlin, showcasing how to specify the type of a variable for improved code clarity and understanding.']}, {'end': 787.989, 'start': 375.93, 'title': 'Data types and casting in kotlin', 'summary': 'Introduces different data types such as integers, longs, doubles, floats, booleans, characters, and demonstrates precision limitations with doubles. it also explains string interpolation, casting, and the use of is keyword for type checking in kotlin.', 'duration': 412.059, 'highlights': ['The chapter introduces different data types such as integers, longs, doubles, floats, booleans, characters It covers the range of data types available in Kotlin.', 'Demonstrates precision limitations with doubles It explains the precision limitations with doubles, specifically how precision falls apart after 15 digits.', 'Explains string interpolation, casting, and the use of is keyword for type checking in Kotlin It covers string interpolation, casting between different types, and using the is keyword for type checking in Kotlin.']}], 'duration': 499.88, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA288109.jpg', 'highlights': ['Kotlin uses type inference, allowing it to automatically determine variable types based on the assigned value, increasing code readability and reducing verbosity.', "The chapter explains the distinction between mutable and immutable variables in Kotlin, demonstrating the use of 'val' for immutable and 'var' for mutable variables.", 'The chapter introduces different data types such as integers, longs, doubles, floats, booleans, characters It covers the range of data types available in Kotlin.', 'Explains string interpolation, casting, and the use of is keyword for type checking in Kotlin It covers string interpolation, casting between different types, and using the is keyword for type checking in Kotlin.', 'The instructor illustrates the process of defining variable types explicitly in Kotlin, showcasing how to specify the type of a variable for improved code clarity and understanding.', 'Demonstrates precision limitations with doubles It explains the precision limitations with doubles, specifically how precision falls apart after 15 digits.']}, {'end': 1751.898, 'segs': [{'end': 843.755, 'src': 'embed', 'start': 816.483, 'weight': 1, 'content': [{'end': 820.365, 'text': "And we can run all those guys and you're going to see that all of those work.", 'start': 816.483, 'duration': 3.882}, {'end': 824.246, 'text': "And that's how casting works inside of Kotlin.", 'start': 820.485, 'duration': 3.761}, {'end': 828.988, 'text': "And now I'm going to jump over and show you a whole bunch of different things we can do with strings.", 'start': 824.647, 'duration': 4.341}, {'end': 830.009, 'text': 'All right.', 'start': 829.489, 'duration': 0.52}, {'end': 833.25, 'text': 'So strings are just double quoted series of characters.', 'start': 830.109, 'duration': 3.141}, {'end': 835.751, 'text': 'And of course, we put val inside of there.', 'start': 833.55, 'duration': 2.201}, {'end': 839.413, 'text': "What does that mean? That means that's a value that is not going to change.", 'start': 835.771, 'duration': 3.642}, {'end': 843.755, 'text': 'And we can go and put my name inside of there.', 'start': 840.093, 'duration': 3.662}], 'summary': 'Demonstration of kotlin features including strings and values.', 'duration': 27.272, 'max_score': 816.483, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA816483.jpg'}, {'end': 956.379, 'src': 'embed', 'start': 926.29, 'weight': 2, 'content': [{'end': 928.852, 'text': "That's how we go and join our values together.", 'start': 926.29, 'duration': 2.562}, {'end': 930.473, 'text': "Let's change that to an uppercase.", 'start': 928.892, 'duration': 1.581}, {'end': 931.154, 'text': 'There we are.', 'start': 930.714, 'duration': 0.44}, {'end': 931.614, 'text': 'All right.', 'start': 931.394, 'duration': 0.22}, {'end': 933.175, 'text': "So that's how we can join strings.", 'start': 931.654, 'duration': 1.521}, {'end': 934.597, 'text': 'Like I said before,', 'start': 933.536, 'duration': 1.061}, {'end': 942.39, 'text': "we're going to be able to use string interpolation or just putting a variable value directly inside of a string that we plan on printing out.", 'start': 934.597, 'duration': 7.793}, {'end': 944.191, 'text': 'So we can go name like that.', 'start': 942.83, 'duration': 1.361}, {'end': 947.333, 'text': 'And we can go full name like that.', 'start': 944.771, 'duration': 2.562}, {'end': 949.795, 'text': "And that's going to print that guy out.", 'start': 947.773, 'duration': 2.022}, {'end': 952.076, 'text': "It's going to do a whole bunch more of these guys.", 'start': 950.155, 'duration': 1.921}, {'end': 956.379, 'text': "You're going to, like I said before, you're going to be able to print out.", 'start': 952.336, 'duration': 4.043}], 'summary': 'Demonstrating string manipulation and interpolation for printing.', 'duration': 30.089, 'max_score': 926.29, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA926290.jpg'}, {'end': 992.282, 'src': 'embed', 'start': 966.249, 'weight': 3, 'content': [{'end': 970.871, 'text': 'And perform arithmetic operations directly inside of your string you want to print out.', 'start': 966.249, 'duration': 4.622}, {'end': 971.692, 'text': 'And that all works good.', 'start': 970.891, 'duration': 0.801}, {'end': 974.573, 'text': "You're going to be able to get your string length.", 'start': 971.972, 'duration': 2.601}, {'end': 977.114, 'text': "Let's go and just copy this guy right here.", 'start': 974.973, 'duration': 2.141}, {'end': 978.615, 'text': 'Paste that inside of there.', 'start': 977.214, 'duration': 1.401}, {'end': 981.316, 'text': 'And I will have all this stuff.', 'start': 978.875, 'duration': 2.441}, {'end': 982.597, 'text': 'Whoops Keep this like this.', 'start': 981.376, 'duration': 1.221}, {'end': 984.378, 'text': "So I'm going to go string length.", 'start': 982.937, 'duration': 1.441}, {'end': 988.76, 'text': 'And then if I want to get that said string length.', 'start': 985.298, 'duration': 3.462}, {'end': 990.921, 'text': "Let's go for the long string.", 'start': 989.32, 'duration': 1.601}, {'end': 992.282, 'text': 'I could do so like this.', 'start': 990.941, 'duration': 1.341}], 'summary': 'Demonstrates performing arithmetic operations and getting string length.', 'duration': 26.033, 'max_score': 966.249, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA966249.jpg'}, {'end': 1212.73, 'src': 'embed', 'start': 1183.314, 'weight': 4, 'content': [{'end': 1186.816, 'text': "Okay, it goes up to index eight, but it doesn't include it with the results.", 'start': 1183.314, 'duration': 3.502}, {'end': 1194.28, 'text': "And then let's as a final little way of working with strings, let's say I want to check to see if a string contains another string.", 'start': 1187.156, 'duration': 7.124}, {'end': 1200.523, 'text': "And of course I can do that and I'll say I want to check to see if it has the value of random somewhere inside of it.", 'start': 1194.68, 'duration': 5.843}, {'end': 1209.048, 'text': 'So I can say something like contains, random, and to check that, I can just go string one and contains,', 'start': 1200.583, 'duration': 8.465}, {'end': 1212.73, 'text': 'and then inside of this guy I can put in whatever I want to search for.', 'start': 1209.048, 'duration': 3.682}], 'summary': "Demonstration of checking if a string contains another string using 'contains' method in a programming context.", 'duration': 29.416, 'max_score': 1183.314, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA1183314.jpg'}, {'end': 1266.346, 'src': 'embed', 'start': 1224.7, 'weight': 0, 'content': [{'end': 1226.041, 'text': 'Contains random, comes back as true.', 'start': 1224.7, 'duration': 1.341}, {'end': 1228.322, 'text': 'What is the second index? Is R.', 'start': 1226.101, 'duration': 2.221}, {'end': 1230.464, 'text': "Why is that? Well, that's because this is zero index.", 'start': 1228.322, 'duration': 2.142}, {'end': 1231.324, 'text': 'This is one index.', 'start': 1230.484, 'duration': 0.84}, {'end': 1233.425, 'text': "And whoops, that's the second index.", 'start': 1231.464, 'duration': 1.961}, {'end': 1234.806, 'text': "So now it isn't, but now it is.", 'start': 1233.445, 'duration': 1.361}, {'end': 1235.787, 'text': 'All right, so good.', 'start': 1235.026, 'duration': 0.761}, {'end': 1237.469, 'text': "Alright, so there's a rough overview.", 'start': 1236.107, 'duration': 1.362}, {'end': 1242.955, 'text': 'Of course there are other functions available with manipulating with strings inside of Kotlin, but those are the main guys.', 'start': 1237.509, 'duration': 5.446}, {'end': 1244.577, 'text': 'And now I want to talk about arrays.', 'start': 1242.995, 'duration': 1.582}, {'end': 1250.074, 'text': 'Okay, so arrays are going to be able to store multiple values of multiple different types.', 'start': 1245.211, 'duration': 4.863}, {'end': 1253.977, 'text': 'And how we can create one is go var and we can go.', 'start': 1250.795, 'duration': 3.182}, {'end': 1260.502, 'text': "let's call this my array is equal to, and how we create an array is you go, array of.", 'start': 1253.977, 'duration': 6.525}, {'end': 1266.346, 'text': "let's say, I want to go one and one, point, two, three and dog.", 'start': 1260.502, 'duration': 5.844}], 'summary': 'Overview of indexing and array creation in kotlin, storing multiple values.', 'duration': 41.646, 'max_score': 1224.7, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA1224700.jpg'}, {'end': 1578.074, 'src': 'embed', 'start': 1548.16, 'weight': 6, 'content': [{'end': 1548.48, 'text': 'All right.', 'start': 1548.16, 'duration': 0.32}, {'end': 1551.281, 'text': "So I'm going to do more with arrays as the tutorial continues.", 'start': 1548.52, 'duration': 2.761}, {'end': 1554.803, 'text': 'But now I want to take a pause here and take a look at ranges.', 'start': 1551.602, 'duration': 3.201}, {'end': 1555.723, 'text': 'All right.', 'start': 1555.303, 'duration': 0.42}, {'end': 1558.104, 'text': 'So ranges are really cool.', 'start': 1555.763, 'duration': 2.341}, {'end': 1567.388, 'text': "What they're basically going to allow you to do is to define basically a starting and an ending value and do all sorts of nifty little calculations in between.", 'start': 1558.405, 'duration': 8.983}, {'end': 1570.81, 'text': "So let's say I want to create a range that goes from one.", 'start': 1567.609, 'duration': 3.201}, {'end': 1572.185, 'text': 'to 10.', 'start': 1571.263, 'duration': 0.922}, {'end': 1575.71, 'text': 'How would I do it? I just do that and then I go one dot dot 10.', 'start': 1572.185, 'duration': 3.525}, {'end': 1578.074, 'text': 'There it is automatically generated it for me.', 'start': 1575.71, 'duration': 2.364}], 'summary': 'Introduction to ranges in arrays, from 1 to 10.', 'duration': 29.914, 'max_score': 1548.16, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA1548160.jpg'}], 'start': 788.109, 'title': 'Working with strings and arrays in kotlin', 'summary': 'Covers working with strings in kotlin, including creating, manipulating, and comparing strings, and operations like getting string length, joining strings, getting specific characters, getting substrings, and checking for string containment. it also includes creation, manipulation, and operations of arrays, storing multiple values of different types, accessing elements, changing values, finding array length, checking for elements, getting a number of elements, and creating type-specific arrays. additionally, it demonstrates the creation and manipulation of ranges, such as defining starting and ending values, searching, decrementing, stepping through, cycling through, and reversing a range.', 'chapters': [{'end': 1242.955, 'start': 788.109, 'title': 'Working with strings in kotlin', 'summary': 'Covers working with strings in kotlin, including creating, manipulating, and comparing strings, as well as performing operations like getting string length, joining strings, getting specific characters, getting substrings, and checking for string containment.', 'duration': 454.846, 'highlights': ['The chapter covers working with strings in Kotlin, including creating, manipulating, and comparing strings, as well as performing operations like getting string length, joining strings, getting specific characters, getting substrings, and checking for string containment.', "Demonstrates creating strings, including long strings and defining string values using 'val'.", 'Explains how to join strings together, change string values, and utilize string interpolation to directly include variable values in a string.', "Illustrates performing arithmetic operations directly inside strings, getting string length, comparing strings for equality, and using 'compareTo' for comparing strings.", "Demonstrates getting specific characters at a given index and getting substrings by providing start and end indices, as well as checking for string containment using 'contains'."]}, {'end': 1751.898, 'start': 1242.995, 'title': 'Arrays and ranges in programming', 'summary': 'Covers the creation, manipulation, and operations of arrays, including storing multiple values of different types, accessing elements, changing values, finding array length, checking for elements, getting a number of elements, and creating type-specific arrays. it also demonstrates the creation and manipulation of ranges, such as defining starting and ending values, searching, decrementing, stepping through, cycling through, and reversing a range.', 'duration': 508.903, 'highlights': ['Creation and manipulation of arrays Demonstrates the creation of arrays to store multiple values of different types and how to access, change, find length, check for elements, get a number of elements, and create type-specific arrays.', 'Creation and manipulation of ranges Illustrates the creation and manipulation of ranges, including defining starting and ending values, searching for elements, decrementing, stepping through, cycling through, and reversing a range.']}], 'duration': 963.789, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA788109.jpg', 'highlights': ['Covers working with strings in Kotlin, including creating, manipulating, and comparing strings, as well as performing operations like getting string length, joining strings, getting specific characters, getting substrings, and checking for string containment.', "Demonstrates creating strings, including long strings and defining string values using 'val'.", 'Explains how to join strings together, change string values, and utilize string interpolation to directly include variable values in a string.', "Illustrates performing arithmetic operations directly inside strings, getting string length, comparing strings for equality, and using 'compareTo' for comparing strings.", "Demonstrates getting specific characters at a given index and getting substrings by providing start and end indices, as well as checking for string containment using 'contains'.", 'Demonstrates the creation of arrays to store multiple values of different types and how to access, change, find length, check for elements, get a number of elements, and create type-specific arrays.', 'Illustrates the creation and manipulation of ranges, including defining starting and ending values, searching for elements, decrementing, stepping through, cycling through, and reversing a range.']}, {'end': 2123.978, 'segs': [{'end': 1806.811, 'src': 'embed', 'start': 1770.955, 'weight': 0, 'content': [{'end': 1778.1, 'text': 'we came down here and we went and added 3 to each of these values and then printed them out on the screen, using this little for loop here.', 'start': 1770.955, 'duration': 7.145}, {'end': 1782.663, 'text': 'You can see 1 plus 3 is equal to 4 plus 3 is equal to 7 and so forth and so on.', 'start': 1778.3, 'duration': 4.363}, {'end': 1787.305, 'text': 'And then we also came here and used 10 to 1 and we re-reversed it.', 'start': 1783.023, 'duration': 4.282}, {'end': 1790.023, 'text': "And that's the reason why we have 1 through 10.", 'start': 1787.626, 'duration': 2.397}, {'end': 1792.524, 'text': 'All right, so a whole bunch of cool things we can do with ranges.', 'start': 1790.023, 'duration': 2.501}, {'end': 1796.766, 'text': 'More is coming as the tutorial continues, and now I want to talk about conditionals.', 'start': 1792.724, 'duration': 4.042}, {'end': 1801.428, 'text': "All right, so of course there's going to be a bunch of different conditional operators.", 'start': 1797.246, 'duration': 4.182}, {'end': 1806.811, 'text': "I'm going to show you here, and you're going to have greater than you're going to have less than you're going to have greater than or equal to.", 'start': 1801.488, 'duration': 5.323}], 'summary': 'Added 3 to each value, used a for loop, and discussed conditionals.', 'duration': 35.856, 'max_score': 1770.955, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA1770955.jpg'}, {'end': 2065.659, 'src': 'embed', 'start': 2024.659, 'weight': 3, 'content': [{'end': 2032.929, 'text': "All right, so that's if, else if, and else, as well as how to use when to do pretty much exactly the same thing in numerous different things.", 'start': 2024.659, 'duration': 8.27}, {'end': 2033.67, 'text': 'This is really cool.', 'start': 2032.949, 'duration': 0.721}, {'end': 2034.13, 'text': 'I love when.', 'start': 2033.69, 'duration': 0.44}, {'end': 2036.253, 'text': 'And you can see it gets exactly the same results.', 'start': 2034.491, 'duration': 1.762}, {'end': 2041.844, 'text': 'All right, so there is a rundown of some conditional operators and conditional things we can do.', 'start': 2036.641, 'duration': 5.203}, {'end': 2043.446, 'text': 'And now I want to talk about looping.', 'start': 2042.145, 'duration': 1.301}, {'end': 2044.286, 'text': 'All right.', 'start': 2043.726, 'duration': 0.56}, {'end': 2046.568, 'text': 'so basically, of course you know,', 'start': 2044.286, 'duration': 2.282}, {'end': 2055.994, 'text': 'looping is going to allow us to cycle through arrays and ranges or collections and all sorts of other different things and basically anything that implements an iterator function.', 'start': 2046.568, 'duration': 9.426}, {'end': 2058.455, 'text': 'So I already talked about for loops a little bit.', 'start': 2056.313, 'duration': 2.142}, {'end': 2059.255, 'text': "Let's do another one.", 'start': 2058.534, 'duration': 0.721}, {'end': 2063.478, 'text': "So I'm going to go for X in and here we're going to use a range.", 'start': 2059.436, 'duration': 4.042}, {'end': 2065.659, 'text': "So I'm going to go one dot dot 10.", 'start': 2063.498, 'duration': 2.161}], 'summary': 'Introduction to conditional operators and looping in programming.', 'duration': 41, 'max_score': 2024.659, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2024659.jpg'}, {'end': 2116.451, 'src': 'embed', 'start': 2086.846, 'weight': 7, 'content': [{'end': 2091.989, 'text': "And this is what I'm going to do is I'm going to use a while loop and it's going to guess random numbers.", 'start': 2086.846, 'duration': 5.143}, {'end': 2095.193, 'text': 'But you may be asking how do we calculate a random number?', 'start': 2092.471, 'duration': 2.722}, {'end': 2102.88, 'text': "Well, the neat thing about Kotlin is basically if there is a library inside of Java, you're going to be able to use it inside of Kotlin.", 'start': 2095.493, 'duration': 7.387}, {'end': 2105.842, 'text': "So we're going to go import java.util.java.", 'start': 2103.06, 'duration': 2.782}, {'end': 2116.451, 'text': "So there's a library we use to import or to calculate random values with Java and automatically we're going to be able to use it with Kotlin.", 'start': 2108.444, 'duration': 8.007}], 'summary': "Using kotlin, we can import and use java's library for calculating random numbers.", 'duration': 29.605, 'max_score': 2086.846, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2086846.jpg'}], 'start': 1752.518, 'title': 'Conditional operators and loops in python and kotlin', 'summary': "Discusses python ranges, conditional operators, and logical operators, with examples. it also introduces kotlin's conditional operators, 'when' operator, and looping, providing clear examples and outputs.", 'chapters': [{'end': 1823.619, 'start': 1752.518, 'title': 'Python ranges and conditional operators', 'summary': 'Discusses the use of python ranges for iteration and demonstrates the application of conditional operators, including greater than, less than, equal to, and logical operators such as and, or, and not.', 'duration': 71.101, 'highlights': ['The tutorial demonstrates adding 3 to each value in a range using a for loop, resulting in values like 4, 7, etc. The tutorial showcases the addition of 3 to each value in a range and the subsequent display of the modified values.', 'The tutorial explains the usage of different conditional operators such as greater than, less than, greater than or equal to, less than or equal to, equal to, and not equal to, as well as logical operators like and, or, and not. The chapter provides an overview of various conditional and logical operators in Python, outlining their usage and significance in programming.', 'The tutorial discusses the concept of reversing a range and demonstrates its application, resulting in the reversed sequence 1 through 10. The concept of reversing a range and its practical implementation are explained, resulting in the sequence 1 through 10.']}, {'end': 2123.978, 'start': 1824.279, 'title': 'Kotlin conditional operators and loops', 'summary': "Introduces the usage of if, else if, and else conditional operators, as well as the 'when' operator for multiple conditions and looping in kotlin, demonstrating examples and outputs.", 'duration': 299.699, 'highlights': ["The chapter introduces the usage of if, else if, and else conditional operators, as well as the 'when' operator for multiple conditions and looping in Kotlin Demonstrates the foundational concepts of conditional statements in Kotlin.", "The 'when' operator is showcased for handling multiple conditions with examples and outputs Illustrates the versatility of the 'when' operator for handling various conditions and producing outputs.", 'Demonstrates the usage of if, else if, and else conditional operators with examples and outputs Provides practical examples and outputs to reinforce the understanding of conditional operators in Kotlin.', 'Shows the implementation of looping using for loops with examples and outputs Provides examples and outputs to demonstrate the usage of for loops in Kotlin for cycling through ranges.', 'Illustrates the usage of while loops with an example of generating random numbers Demonstrates the usage of while loops and the generation of random numbers in Kotlin.']}], 'duration': 371.46, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA1752518.jpg', 'highlights': ['The tutorial demonstrates adding 3 to each value in a range using a for loop, resulting in values like 4, 7, etc.', 'The tutorial explains the usage of different conditional operators such as greater than, less than, etc., and logical operators like and, or, and not.', 'The tutorial discusses the concept of reversing a range and demonstrates its application, resulting in the reversed sequence 1 through 10.', "The chapter introduces the usage of if, else if, and else conditional operators, as well as the 'when' operator for multiple conditions and looping in Kotlin.", "The 'when' operator is showcased for handling multiple conditions with examples and outputs.", 'Demonstrates the usage of if, else if, and else conditional operators with examples and outputs.', 'Shows the implementation of looping using for loops with examples and outputs.', 'Illustrates the usage of while loops with an example of generating random numbers.']}, {'end': 2560.531, 'segs': [{'end': 2150.87, 'src': 'embed', 'start': 2125.499, 'weight': 0, 'content': [{'end': 2136.944, 'text': "and then go val and I'm gonna call this magic number is equal to rand and next I'm gonna work with integers.", 'start': 2125.499, 'duration': 11.445}, {'end': 2141.646, 'text': 'so I want to find a random value from 50 to 1 or from 1 to 50.', 'start': 2136.944, 'duration': 4.702}, {'end': 2143.166, 'text': 'I guess is a better way of saying that.', 'start': 2141.646, 'duration': 1.52}, {'end': 2147.668, 'text': "let's change this to magic number lowercase and now let's use our while loop.", 'start': 2143.166, 'duration': 4.502}, {'end': 2150.87, 'text': 'of course, with while loop, like in almost every other language,', 'start': 2147.668, 'duration': 3.202}], 'summary': 'Generating a random number between 1 and 50 using a while loop and integers.', 'duration': 25.371, 'max_score': 2125.499, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2125499.jpg'}, {'end': 2239.342, 'src': 'embed', 'start': 2210.304, 'weight': 1, 'content': [{'end': 2215.906, 'text': "Another thing, let's go and do another while loop so that I can talk about continue and break.", 'start': 2210.304, 'duration': 5.602}, {'end': 2217.327, 'text': "Let's do this as a for loop.", 'start': 2216.006, 'duration': 1.321}, {'end': 2223.791, 'text': "So let's go 4, and we'll say x in, and I'm going to go 1, 2, 20.", 'start': 2217.527, 'duration': 6.264}, {'end': 2234.359, 'text': "And then what I'm going to do is I'm going to say if x modulus 2 is equal to 0, modulus is going to give us the remainder of a division.", 'start': 2223.793, 'duration': 10.566}, {'end': 2239.342, 'text': 'And what this is used for is to check if a value is even or odd.', 'start': 2234.799, 'duration': 4.543}], 'summary': 'Demonstrating the for loop with modulus to check even/odd values.', 'duration': 29.038, 'max_score': 2210.304, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2210304.jpg'}, {'end': 2445.215, 'src': 'embed', 'start': 2406.865, 'weight': 2, 'content': [{'end': 2416.247, 'text': "that's going to print out real nice on the screen and indeed you can see here I went and printed out those values inside of our array by referring to their index,", 'start': 2406.865, 'duration': 9.382}, {'end': 2418.648, 'text': 'and here I printed out the index as well as the values.', 'start': 2416.247, 'duration': 2.401}, {'end': 2424.258, 'text': 'Alright. so there is a whole bunch of different things about looping and now I want to talk about functions.', 'start': 2419.108, 'duration': 5.15}, {'end': 2434.349, 'text': "Okay, so whenever you're defining a function, it's going to start out with the word fun and then it's going to have, whatever the function name is,", 'start': 2424.744, 'duration': 9.605}, {'end': 2439.592, 'text': 'a list of parameters as well as their data type, as well as a return type.', 'start': 2434.349, 'duration': 5.243}, {'end': 2440.532, 'text': "So I'm going to do an example.", 'start': 2439.612, 'duration': 0.92}, {'end': 2445.215, 'text': "So let's say we create a function called add and then inside of parentheses,", 'start': 2440.652, 'duration': 4.563}], 'summary': 'Demonstrating array indexing and function definition in programming.', 'duration': 38.35, 'max_score': 2406.865, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2406865.jpg'}, {'end': 2517.369, 'src': 'embed', 'start': 2487.68, 'weight': 4, 'content': [{'end': 2490.78, 'text': 'And you can see 5 plus 4 is equal to 9.', 'start': 2487.68, 'duration': 3.1}, {'end': 2498.082, 'text': 'Now one thing that is interesting is that you actually do not need a return type whenever you are working with single line functions.', 'start': 2490.78, 'duration': 7.302}, {'end': 2500.622, 'text': 'This is a single line function, what we have right here.', 'start': 2498.482, 'duration': 2.14}, {'end': 2503.943, 'text': "So let's go and I'll show you exactly what I mean by that.", 'start': 2501.122, 'duration': 2.821}, {'end': 2508.003, 'text': "Let's just copy this and just change it to a subtract, just so I can show you an example.", 'start': 2504.063, 'duration': 3.94}, {'end': 2511.524, 'text': "So I'll throw that inside of there, change this to subtract.", 'start': 2508.283, 'duration': 3.241}, {'end': 2517.369, 'text': "it's once again going to receive a number and another number and another thing.", 'start': 2512.665, 'duration': 4.704}], 'summary': 'Demonstration of single line functions, 5 + 4 = 9', 'duration': 29.689, 'max_score': 2487.68, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2487680.jpg'}], 'start': 2125.499, 'title': 'Working with random numbers and loops and kotlin arrays, iteration, and functions', 'summary': 'Covers working with random numbers, using while loops to guess a random number, and demonstrating the use of continue and break within for loops, showcasing the functionality of these concepts. it also covers iterating through arrays, demonstrating the use of indices, accessing values by index, and defining functions with parameters and default values, showcasing the addition and subtraction functions with single line implementation and default values.', 'chapters': [{'end': 2301.801, 'start': 2125.499, 'title': 'Working with random numbers and loops', 'summary': 'Covers working with random numbers, using while loops to guess a random number, and demonstrating the use of continue and break within for loops, showcasing the functionality of these concepts.', 'duration': 176.302, 'highlights': ['Demonstrating while loop to guess a random number from 1 to 50, showcasing the functionality of the random number generator and the while loop. Random number generator functionality, looping through and printing values, showcasing the random number generated.', 'Explaining the use of continue and break within a for loop to skip even numbers and prematurely exit the loop based on a specific condition. Skipping even numbers, premature exit from the loop based on a specific condition, showcasing the functionality of continue and break within a for loop.']}, {'end': 2560.531, 'start': 2302.141, 'title': 'Kotlin arrays, iteration, and functions', 'summary': 'Covers iterating through arrays, demonstrating the use of indices, accessing values by index, and defining functions with parameters and default values, showcasing the addition and subtraction functions with single line implementation and default values.', 'duration': 258.39, 'highlights': ["Iterating through arrays using indices and accessing values by index Demonstrates iterating through an array using indices and accessing values by index, showcasing the use of 'for' loop and the 'indices' property.", 'Defining functions with parameters and return type Explains the process of defining a function with parameters and return type, exemplifying the addition function with parameter types and return type.', 'Demonstrating single line functions and default parameter values Showcases the implementation of a single line function and default parameter values, using the subtraction function and default values as an example.']}], 'duration': 435.032, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2125499.jpg', 'highlights': ['Demonstrating while loop to guess a random number from 1 to 50, showcasing the functionality of the random number generator and the while loop.', 'Explaining the use of continue and break within a for loop to skip even numbers and prematurely exit the loop based on a specific condition.', "Iterating through arrays using indices and accessing values by index Demonstrates iterating through an array using indices and accessing values by index, showcasing the use of 'for' loop and the 'indices' property.", 'Defining functions with parameters and return type Explains the process of defining a function with parameters and return type, exemplifying the addition function with parameter types and return type.', 'Demonstrating single line functions and default parameter values Showcases the implementation of a single line function and default parameter values, using the subtraction function and default values as an example.']}, {'end': 2907.435, 'segs': [{'end': 2630.49, 'src': 'embed', 'start': 2560.731, 'weight': 0, 'content': [{'end': 2568.776, 'text': "Okay, so there is how to set default values and also point out the fact that if this is a single line function, you don't need a return value,", 'start': 2560.731, 'duration': 8.045}, {'end': 2569.777, 'text': 'but put it in there.', 'start': 2568.776, 'duration': 1.001}, {'end': 2570.457, 'text': 'You might as well.', 'start': 2569.937, 'duration': 0.52}, {'end': 2571.778, 'text': 'All right, another thing.', 'start': 2570.777, 'duration': 1.001}, {'end': 2575.32, 'text': "You're also going to be able to use what are called named parameters.", 'start': 2572.018, 'duration': 3.302}, {'end': 2580.427, 'text': "And what I mean by that is you're going to be able to refer to these even though they're out of order.", 'start': 2576.045, 'duration': 4.382}, {'end': 2581.647, 'text': "So I'm going to come in.", 'start': 2580.487, 'duration': 1.16}, {'end': 2583.988, 'text': "I'm just going to paste this inside of here like that.", 'start': 2581.968, 'duration': 2.02}, {'end': 2589.871, 'text': "And here I'm going to say 4 minus 5 is equal to.", 'start': 2584.389, 'duration': 5.482}, {'end': 2592.412, 'text': "And I'm going to call subtract.", 'start': 2590.471, 'duration': 1.941}, {'end': 2594.253, 'text': 'So subtract.', 'start': 2592.712, 'duration': 1.541}, {'end': 2597.554, 'text': "And then we'll go in and name the parameters.", 'start': 2594.593, 'duration': 2.961}, {'end': 2600.195, 'text': "So I'm going to say I want to put num2 inside of here first.", 'start': 2597.574, 'duration': 2.621}, {'end': 2602.136, 'text': 'Give it a value of 5.', 'start': 2600.496, 'duration': 1.64}, {'end': 2603.157, 'text': "And then I'm going to have num1.", 'start': 2602.136, 'duration': 1.021}, {'end': 2606.998, 'text': "And of course, I'm going to give it a value of four.", 'start': 2604.257, 'duration': 2.741}, {'end': 2608.719, 'text': 'That is perfectly fine.', 'start': 2607.158, 'duration': 1.561}, {'end': 2609.899, 'text': 'You can do that as well.', 'start': 2608.779, 'duration': 1.12}, {'end': 2616.501, 'text': "You may ask yourself, well, what do I put inside of here if I don't have a return value? Well, you're going to put unit, not void.", 'start': 2610.299, 'duration': 6.202}, {'end': 2621.043, 'text': "So let's go and create a function that doesn't return anything.", 'start': 2616.741, 'duration': 4.302}, {'end': 2630.49, 'text': "let's just call it, say hello, and it is going to receive a name, which is going to be a string data type, and it is going to return nothing.", 'start': 2621.043, 'duration': 9.447}], 'summary': 'Explanation of setting default values, named parameters, and functions that return nothing.', 'duration': 69.759, 'max_score': 2560.731, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2560731.jpg'}, {'end': 2682.455, 'src': 'embed', 'start': 2654.31, 'weight': 2, 'content': [{'end': 2656.612, 'text': "And what else can we do with functions? There's a whole bunch.", 'start': 2654.31, 'duration': 2.302}, {'end': 2664.199, 'text': "We can create a function that is going to return two values, and there's a couple different ways of doing that.", 'start': 2656.972, 'duration': 7.227}, {'end': 2673.967, 'text': "Let's go Val, and, well, let's create a function outside of here, and we'll come down inside of here, and this is going to return two values.", 'start': 2664.519, 'duration': 9.448}, {'end': 2682.455, 'text': "So we're going to go fun, next, two, and this is going to receive a number, and then it is going to return the next two inline.", 'start': 2674.068, 'duration': 8.387}], 'summary': 'Functions can return two values, using different methods.', 'duration': 28.145, 'max_score': 2654.31, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2654310.jpg'}, {'end': 2776.445, 'src': 'embed', 'start': 2743.702, 'weight': 3, 'content': [{'end': 2747.664, 'text': "So 4 minus 5, where is that guy from? Oh, that's from this guy right here.", 'start': 2743.702, 'duration': 3.962}, {'end': 2749.345, 'text': 'And then we have hello, Paul.', 'start': 2747.684, 'duration': 1.661}, {'end': 2750.425, 'text': 'That comes out there.', 'start': 2749.585, 'duration': 0.84}, {'end': 2755.548, 'text': 'And in here, we were able to get two values passed back from one function.', 'start': 2750.445, 'duration': 5.103}, {'end': 2759.271, 'text': 'So a whole bunch of neat things, but there are more and more are coming.', 'start': 2755.968, 'duration': 3.303}, {'end': 2763.114, 'text': "You're also going to be able to send a variable number of parameters.", 'start': 2759.471, 'duration': 3.643}, {'end': 2764.935, 'text': "We're going to create a function outside of here again.", 'start': 2763.154, 'duration': 1.781}, {'end': 2768.739, 'text': "So I'm going to go function and I'm going to call this getSum.", 'start': 2765.236, 'duration': 3.503}, {'end': 2776.445, 'text': "And if I'm going to receive a variable number of values, I'm going to type in var arg like that and then give it whatever name I want.", 'start': 2769.059, 'duration': 7.386}], 'summary': 'Demonstration of passing multiple values in a function and creating a variable parameter function.', 'duration': 32.743, 'max_score': 2743.702, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2743702.jpg'}, {'end': 2862.754, 'src': 'embed', 'start': 2830.888, 'weight': 4, 'content': [{'end': 2836.257, 'text': "So I'm going to go get sum and one, two, three, four and a, five.", 'start': 2830.888, 'duration': 5.369}, {'end': 2837.419, 'text': 'And there it is.', 'start': 2836.578, 'duration': 0.841}, {'end': 2839.042, 'text': 'And there it is.', 'start': 2837.88, 'duration': 1.162}, {'end': 2841.428, 'text': 'And you can see the sum comes back as 15.', 'start': 2839.162, 'duration': 2.266}, {'end': 2845.589, 'text': "We're also going to be able to come in and define function literals.", 'start': 2841.428, 'duration': 4.161}, {'end': 2855.192, 'text': "So let's say we want to have multiply like this is equal to and we'll have num1 inside of there.", 'start': 2845.949, 'duration': 9.243}, {'end': 2859.933, 'text': "And that's going to be an integer and num2.", 'start': 2856.052, 'duration': 3.881}, {'end': 2862.754, 'text': "And that's also going to be an integer.", 'start': 2859.953, 'duration': 2.801}], 'summary': 'The sum of the numbers 1 to 5 is 15, and function literals can be defined for multiplication.', 'duration': 31.866, 'max_score': 2830.888, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2830888.jpg'}], 'start': 2560.731, 'title': 'Kotlin functions and parameters', 'summary': 'Covers creating functions in kotlin, including default values and named parameters, as well as functions with no return value, multiple return values, variable parameters, function literals, and tail recursion. an example demonstrates using named parameters out of order.', 'chapters': [{'end': 2606.998, 'start': 2560.731, 'title': 'Function default values and named parameters', 'summary': 'Explains setting default values and using named parameters in functions, with an example showcasing named parameters being used out of order.', 'duration': 46.267, 'highlights': ['The chapter discusses setting default values in functions and emphasizes that a return value is not necessary for single line functions but can be included. It also mentions the use of named parameters.', 'The example provided demonstrates the usage of named parameters out of order, with num2 being assigned before num1.']}, {'end': 2907.435, 'start': 2607.158, 'title': 'Kotlin functions and return values', 'summary': 'Covers the creation of functions in kotlin, including functions with no return value, functions returning two values, variable number of parameters, function literals, and factorial calculation using tail recursion.', 'duration': 300.277, 'highlights': ["Creation of functions with no return value Explains the creation of a function in Kotlin that doesn't return anything using the 'unit' data type.", "Creation of functions returning two values Demonstrates the creation of a function in Kotlin that returns two values using the 'pair' data type.", 'Variable number of parameters in functions Illustrates the use of a variable number of parameters in a function and shows the calculation of the sum of the passed values.', 'Creation of function literals Covers the creation and usage of function literals in Kotlin, including an example of a function for multiplication.', 'Factorial calculation with tail recursion Mentions the possibility of calculating a factorial with tail recursion, though not delving into the details in this chapter.']}], 'duration': 346.704, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2560731.jpg', 'highlights': ['The example provided demonstrates the usage of named parameters out of order, with num2 being assigned before num1.', "Creation of functions with no return value Explains the creation of a function in Kotlin that doesn't return anything using the 'unit' data type.", "Creation of functions returning two values Demonstrates the creation of a function in Kotlin that returns two values using the 'pair' data type.", 'Variable number of parameters in functions Illustrates the use of a variable number of parameters in a function and shows the calculation of the sum of the passed values.', 'Creation of function literals Covers the creation and usage of function literals in Kotlin, including an example of a function for multiplication.', 'The chapter discusses setting default values in functions and emphasizes that a return value is not necessary for single line functions but can be included. It also mentions the use of named parameters.']}, {'end': 4213.045, 'segs': [{'end': 3054.2, 'src': 'embed', 'start': 3029.391, 'weight': 0, 'content': [{'end': 3034.815, 'text': 'And we will go fact and inside of here, throw in the value of five.', 'start': 3029.391, 'duration': 5.424}, {'end': 3036.316, 'text': "So we'll save it and run it.", 'start': 3034.955, 'duration': 1.361}, {'end': 3040, 'text': "And you'll see that the factorial of 5 is equal to 120.", 'start': 3036.597, 'duration': 3.403}, {'end': 3044.464, 'text': 'All right, so neat stuff and more and more and more stuff with functions is coming.', 'start': 3040, 'duration': 4.464}, {'end': 3046.606, 'text': 'Now I want to talk about higher order functions.', 'start': 3044.524, 'duration': 2.082}, {'end': 3054.2, 'text': 'Okay so a higher order function is just going to be a function that either accepts or returns another function.', 'start': 3047.054, 'duration': 7.146}], 'summary': 'Factorial of 5 is 120, higher order functions explained.', 'duration': 24.809, 'max_score': 3029.391, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA3029391.jpg'}, {'end': 3458.039, 'src': 'embed', 'start': 3402.873, 'weight': 1, 'content': [{'end': 3407.978, 'text': 'All right, so these collection operators are going to work on any type of collection.', 'start': 3402.873, 'duration': 5.105}, {'end': 3409.88, 'text': "So arrays, and you're going to see.", 'start': 3408.078, 'duration': 1.802}, {'end': 3415.045, 'text': "I'm going to cover lists and maps, and there's a couple other different collections, but either way.", 'start': 3409.96, 'duration': 5.085}, {'end': 3419.04, 'text': "So let's say we wanted to sum all the values in a list.", 'start': 3415.495, 'duration': 3.545}, {'end': 3428.392, 'text': 'We go val and list sum is going to be equal to number list two, which is what I have right there.', 'start': 3419.26, 'duration': 9.132}, {'end': 3431.896, 'text': 'And I can call reduce to do just that.', 'start': 3428.412, 'duration': 3.484}, {'end': 3439.724, 'text': 'And what I need to do with reduce, is go X and Y and say that I want to sum those values together.', 'start': 3432.297, 'duration': 7.427}, {'end': 3442.706, 'text': 'And you can perform all sorts of other different operations.', 'start': 3439.904, 'duration': 2.802}, {'end': 3448.391, 'text': 'The fold is kind of like reduce, but it starts with a initial value.', 'start': 3443.067, 'duration': 5.324}, {'end': 3452.154, 'text': 'So I can come in and grab this guy like that.', 'start': 3448.631, 'duration': 3.523}, {'end': 3458.039, 'text': "And I can do, hmm, well, let's also come in and print this out.", 'start': 3453.095, 'duration': 4.944}], 'summary': 'The transcript covers collection operators working on various types of collections, demonstrating summing values in a list using reduce and fold operations.', 'duration': 55.166, 'max_score': 3402.873, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA3402873.jpg'}, {'end': 4127.782, 'src': 'embed', 'start': 4101.429, 'weight': 2, 'content': [{'end': 4107.794, 'text': "What I'm going to work with here is a mutable map and how you load one is you go mutable map of,", 'start': 4101.429, 'duration': 6.365}, {'end': 4116.334, 'text': "and here I'm going to define that the key is going to be an integer and the value in this situation is going to be anything.", 'start': 4107.794, 'duration': 8.54}, {'end': 4118.956, 'text': 'And we go like this, and there we go.', 'start': 4116.913, 'duration': 2.043}, {'end': 4120.497, 'text': 'So now we created our map.', 'start': 4119.256, 'duration': 1.241}, {'end': 4122.318, 'text': "Now it's time for us to use our map.", 'start': 4120.617, 'duration': 1.701}, {'end': 4127.782, 'text': "Let's go, well, I'm also gonna show you how to create a map in which you load values whenever you first start it.", 'start': 4122.618, 'duration': 5.164}], 'summary': 'Demonstrating how to work with a mutable map, using integer keys and any values.', 'duration': 26.353, 'max_score': 4101.429, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA4101429.jpg'}], 'start': 2907.635, 'title': 'Kotlin programming concepts', 'summary': 'Covers factorial calculation using tail recursion, higher order functions, and collection operators such as filter, reduce, and fold, with examples demonstrating their use and the resulting output values. it also introduces exception handling in kotlin and demonstrates working with lists and maps including their operations and properties.', 'chapters': [{'end': 3046.606, 'start': 2907.635, 'title': 'Calculating factorial using tail recursion', 'summary': 'Covers the implementation of factorial calculation using tail recursion, providing an example of calculating the factorial of 5, resulting in a value of 120, and introduces the concept of higher order functions.', 'duration': 138.971, 'highlights': ['The chapter demonstrates the implementation of tail recursion for calculating the factorial of 5, resulting in a value of 120, showcasing a practical application of recursion and mathematical computation.', 'Introduction of the concept of higher order functions, hinting at further exploration of this topic in the upcoming content.', 'Explanation of the factorial calculation process, illustrating how a factorial is derived by multiplying a given number by all positive integers less than itself.']}, {'end': 3509.342, 'start': 3047.054, 'title': 'Higher order functions and collection operators', 'summary': 'Introduces higher order functions through examples of using filter to find even values in a range, creating a function that dynamically generates custom functions, and a function that receives a list and a function to operate on the list. it also explores collection operators such as reduce and fold, demonstrating their use on arrays.', 'duration': 462.288, 'highlights': ['Demonstrating the creation of a custom function that multiplies values based on a passed-in number, showcasing the concept of a function generating other functions. Examples of creating and using a function that dynamically generates custom functions.', 'Exploring the use of collection operators like reduce and fold to perform operations on arrays, showcasing the difference between the two operators and their resulting outputs. Demonstration of the use of collection operators like reduce and fold on arrays, with a clear comparison of their functionality and output.', 'Illustrating the concept of higher order functions through examples of using filter to find even values in a range and demonstrating the use of a function that receives a list and a function to operate on the list. Practical examples of higher order functions using filter to find even values and a function operating on a list.']}, {'end': 3796.379, 'start': 3509.342, 'title': 'Collection operators and exception handling', 'summary': 'Covers collection operators like filter, map, and foreach, and exception handling in kotlin with a brief example. it also includes a demonstration of catching an exception and using try-catch blocks to handle errors.', 'duration': 287.037, 'highlights': ['The chapter covers collection operators like filter, map, and forEach The chapter discusses the usage of collection operators such as filter, map, and forEach to apply conditions, perform actions on each item, and return new lists.', 'Exception handling in Kotlin with a brief example The chapter provides a brief explanation of exception handling in Kotlin with a specific example demonstrating the use of try-catch blocks to handle errors and catch exceptions.', 'Demonstration of catching an exception and using try-catch blocks to handle errors The chapter demonstrates catching an exception by using a try-catch block to handle errors, specifically showing the handling of a division by zero scenario and printing the exception message.']}, {'end': 4213.045, 'start': 3796.919, 'title': 'Working with lists and maps', 'summary': 'Covers creating and working with mutable and immutable lists, including adding, getting, removing items and working with indexes, as well as creating and using mutable maps with key-value pairs.', 'duration': 416.126, 'highlights': ['The chapter focuses on creating and working with mutable and immutable lists, including adding, getting, and removing items, as well as working with indexes, and creating and using mutable maps with key-value pairs.', 'Demonstrates creating a mutable list and populating it with values, showcasing adding, getting, and removing items, working with indexes, getting sublists, obtaining the size, and clearing the list.', 'Illustrates creating a mutable map and loading values, adding additional values, obtaining the size, adding a key-value pair, removing a key and value, and iterating to get key values.']}], 'duration': 1305.41, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA2907635.jpg', 'highlights': ['Demonstrates the implementation of tail recursion for calculating the factorial of 5, resulting in a value of 120, showcasing a practical application of recursion and mathematical computation.', 'Exploring the use of collection operators like reduce and fold to perform operations on arrays, showcasing the difference between the two operators and their resulting outputs. Demonstration of the use of collection operators like reduce and fold on arrays, with a clear comparison of their functionality and output.', 'Illustrates creating a mutable map and loading values, adding additional values, obtaining the size, adding a key-value pair, removing a key and value, and iterating to get key values.', 'Exploration of the use of collection operators such as filter, map, and forEach to apply conditions, perform actions on each item, and return new lists.']}, {'end': 5182.797, 'segs': [{'end': 4276.762, 'src': 'embed', 'start': 4245.067, 'weight': 1, 'content': [{'end': 4249.15, 'text': "And here it's cycled through the different values and printed them out, the keys and the values.", 'start': 4245.067, 'duration': 4.083}, {'end': 4253.194, 'text': 'Okay So brief explanation of how maps work in Kotlin.', 'start': 4249.17, 'duration': 4.024}, {'end': 4254.475, 'text': 'Now I want to talk about classes.', 'start': 4253.214, 'duration': 1.261}, {'end': 4259.777, 'text': "All right, so we're going to create a class outside of the main function right here.", 'start': 4254.915, 'duration': 4.862}, {'end': 4264.718, 'text': "And I can get rid of this random function or this random import up here because I'm not going to use it anymore.", 'start': 4259.937, 'duration': 4.781}, {'end': 4266.599, 'text': 'So we can come down here like this.', 'start': 4265.018, 'duration': 1.581}, {'end': 4276.762, 'text': "And it's important to understand up front that there are no static methods and that classes are going to be marked as final, like in Java, by default,", 'start': 4267.379, 'duration': 9.383}], 'summary': 'Transcript covers explanation of maps and classes in kotlin.', 'duration': 31.695, 'max_score': 4245.067, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA4245067.jpg'}, {'end': 4668.892, 'src': 'embed', 'start': 4639.359, 'weight': 2, 'content': [{'end': 4641.442, 'text': 'And is owned by an owner.', 'start': 4639.359, 'duration': 2.083}, {'end': 4645.408, 'text': 'Okay, so there we go.', 'start': 4644.326, 'duration': 1.082}, {'end': 4648.573, 'text': 'We just created a dog which inherits from animal.', 'start': 4645.488, 'duration': 3.085}, {'end': 4654.482, 'text': "Let's come up here and test it to make sure that it operates the way that we feel that it should.", 'start': 4648.813, 'duration': 5.669}, {'end': 4658.509, 'text': "So I'm going to go val spot is equal to.", 'start': 4654.502, 'duration': 4.007}, {'end': 4662.371, 'text': "And here, I'm going to call dog and spot.", 'start': 4659.15, 'duration': 3.221}, {'end': 4667.832, 'text': 'And polymorphism is going to work in Kotlin just like you would expect it to.', 'start': 4663.111, 'duration': 4.721}, {'end': 4668.892, 'text': "So let's go like this.", 'start': 4667.932, 'duration': 0.96}], 'summary': 'Creating a dog subclass that inherits from animal and testing polymorphism in kotlin.', 'duration': 29.533, 'max_score': 4639.359, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA4639359.jpg'}, {'end': 4736.285, 'src': 'embed', 'start': 4710.631, 'weight': 3, 'content': [{'end': 4718.954, 'text': 'And an interface, of course, is just a contract that states that all fields and methods a class must implement if it implements the interface.', 'start': 4710.631, 'duration': 8.323}, {'end': 4736.285, 'text': "So I'm going to call this interface flyable and I'm going to say that anybody that basically wants to use the interface is going to have to have a field inside of it called flies and it is going to be a boolean,", 'start': 4719.334, 'duration': 16.951}], 'summary': 'Creating a flyable interface with a mandatory boolean field.', 'duration': 25.654, 'max_score': 4710.631, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA4710631.jpg'}, {'end': 4925.881, 'src': 'heatmap', 'start': 4869.919, 'weight': 1, 'content': [{'end': 4874.241, 'text': "And then let's come up inside of here and test out our interface.", 'start': 4869.919, 'duration': 4.322}, {'end': 4875.862, 'text': "So there's all this stuff.", 'start': 4874.622, 'duration': 1.24}, {'end': 4876.443, 'text': 'There we are.', 'start': 4875.882, 'duration': 0.561}, {'end': 4877.563, 'text': "We're in the main function.", 'start': 4876.463, 'duration': 1.1}, {'end': 4880.264, 'text': "And I'm going to create a bird.", 'start': 4878.243, 'duration': 2.021}, {'end': 4881.425, 'text': "Let's call it Tornado.", 'start': 4880.565, 'duration': 0.86}, {'end': 4893.238, 'text': 'tweety so is equal to bird and the name is tweety and it is going to be true that tweety is a flying bird.', 'start': 4881.425, 'duration': 11.813}, {'end': 4901.367, 'text': "and then we can say tweet and call for the fly function to work and we'll say that tweety flew 10 miles.", 'start': 4893.238, 'duration': 8.129}, {'end': 4903.788, 'text': "let's run that and see if i Have any errors?", 'start': 4901.367, 'duration': 2.421}, {'end': 4905.248, 'text': 'Oops, have an error.', 'start': 4904.408, 'duration': 0.84}, {'end': 4909.731, 'text': 'What do we got? Unresolved reference tweet distance miles.', 'start': 4905.288, 'duration': 4.443}, {'end': 4911.732, 'text': 'Okay, so 17.', 'start': 4909.891, 'duration': 1.841}, {'end': 4912.413, 'text': 'Oh, Tweety.', 'start': 4911.732, 'duration': 0.681}, {'end': 4913.794, 'text': "I'm going to spell that.", 'start': 4912.433, 'duration': 1.361}, {'end': 4915.675, 'text': "Let's run it again just to see.", 'start': 4913.974, 'duration': 1.701}, {'end': 4919.137, 'text': 'And we have another error.', 'start': 4915.695, 'duration': 3.442}, {'end': 4921.298, 'text': '62 unresolved reference distance miles.', 'start': 4919.157, 'duration': 2.141}, {'end': 4922.639, 'text': 'Distance miles.', 'start': 4921.679, 'duration': 0.96}, {'end': 4924.4, 'text': 'Distance miles.', 'start': 4922.699, 'duration': 1.701}, {'end': 4925.881, 'text': 'Oh, distance miles.', 'start': 4925.021, 'duration': 0.86}], 'summary': 'Testing interface for creating bird tornado, encountering errors with distance miles.', 'duration': 55.962, 'max_score': 4869.919, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA4869919.jpg'}, {'end': 4962.971, 'src': 'embed', 'start': 4933.728, 'weight': 0, 'content': [{'end': 4934.569, 'text': "I'm just going to run it.", 'start': 4933.728, 'duration': 0.841}, {'end': 4937.973, 'text': 'And you can see Tweety flies 10 miles.', 'start': 4935.07, 'duration': 2.903}, {'end': 4939.434, 'text': 'Okay So there you go.', 'start': 4938.313, 'duration': 1.121}, {'end': 4942.397, 'text': "There's interfaces and a whole bunch of other different things.", 'start': 4939.454, 'duration': 2.943}, {'end': 4945.901, 'text': "And to finish off everything, I'm going to talk about null safety.", 'start': 4942.597, 'duration': 3.304}, {'end': 4953.946, 'text': 'Okay, so null safety is built directly into Kotlin because null causes lots of issues.', 'start': 4946.241, 'duration': 7.705}, {'end': 4958.509, 'text': "So Kotlin, that's one thing that Kotlin tries to do is to solve potential issues.", 'start': 4953.986, 'duration': 4.523}, {'end': 4962.971, 'text': 'Now, by default, you actually cannot assign null.', 'start': 4958.809, 'duration': 4.162}], 'summary': 'Tweety flies 10 miles in kotlin, which has built-in null safety to solve potential issues.', 'duration': 29.243, 'max_score': 4933.728, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA4933728.jpg'}, {'end': 5181.015, 'src': 'embed', 'start': 5151.478, 'weight': 4, 'content': [{'end': 5153.72, 'text': "It's going to be the question mark followed by a colon.", 'start': 5151.478, 'duration': 2.242}, {'end': 5164.128, 'text': "And there we'll say, if you try to assign a value of null to null val 4, instead install or assign the value of no name.", 'start': 5154.341, 'duration': 9.787}, {'end': 5166.419, 'text': 'Okay? So there you go, guys.', 'start': 5164.148, 'duration': 2.271}, {'end': 5174.908, 'text': "Did my best to cover the vast majority of what you're going to need to get going in regards to working with an absolutely super awesome language,", 'start': 5166.699, 'duration': 8.209}, {'end': 5175.269, 'text': 'Kotlin.', 'start': 5174.908, 'duration': 0.361}, {'end': 5181.015, 'text': 'And if you guys have any questions or comments, please leave them down below.', 'start': 5175.849, 'duration': 5.166}], 'summary': 'Covered working with kotlin language, for any questions or comments, please leave them below.', 'duration': 29.537, 'max_score': 5151.478, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA5151478.jpg'}], 'start': 4213.626, 'title': 'Kotlin programming concepts', 'summary': 'Covers kotlin programming concepts including maps, classes, regular expressions, object inheritance, interfaces, and null safety. it includes demonstrations of map implementation, class initialization, inheritance, interface creation, and null safety handling, providing a comprehensive understanding of kotlin programming with practical examples.', 'chapters': [{'end': 4471.632, 'start': 4213.626, 'title': 'Kotlin maps, classes, and regular expressions', 'summary': 'Covers the implementation of maps and classes in kotlin, including a demonstration of a map with a size of two and a detailed explanation of creating and initializing a class with attributes such as name and height. additionally, it touches on the implementation of regular expressions to enforce constraints on the attributes of the class.', 'duration': 258.006, 'highlights': ['Demonstration of map implementation with a size of two The code demonstrates the implementation of a map in Kotlin, showcasing a map size of two.', 'Explanation of creating and initializing a class with attributes The transcript provides a detailed explanation of creating and initializing a class in Kotlin, with attributes such as name and height, utilizing val and var for immutability and mutability, respectively.', "Implementation of regular expressions to enforce constraints on class attributes The transcript showcases the use of regular expressions to enforce constraints on class attributes, specifically ensuring that the animal's name does not contain numbers and that the height and weight are greater than zero by utilizing the require function to throw an illegal argument exception if the constraints are not met."]}, {'end': 4691.799, 'start': 4471.992, 'title': 'Object inheritance in kotlin', 'summary': 'Covers the concept of object inheritance in kotlin, demonstrating the creation of classes, attributes, methods, as well as inheritance and polymorphism, resulting in successful execution of the described operations.', 'duration': 219.807, 'highlights': ["The chapter extensively covers the process of defining classes, attributes, and methods in Kotlin, emphasizing the use of inheritance to create a new class 'dog' that inherits from the 'animal' class.", "It demonstrates the creation of an 'animal' object and the execution of a function 'get info' to display information, showcasing successful implementation with the output 'bowser is 20.0 tall and weighs 13.5'.", "The chapter concludes with a practical example of polymorphism, illustrating the creation of a 'dog' object and its successful operation, displaying the output 'spot is 20 inches tall, weighs 14.5, and is owned by Paul Smith'."]}, {'end': 4933.708, 'start': 4691.94, 'title': 'Understanding interfaces in kotlin', 'summary': "Explains the concept of interfaces in kotlin, demonstrating the creation of an interface 'flyable' with a 'flies' field and 'fly' method, and its implementation in a 'bird' class. the code is tested with a bird object 'tweety' that can fly 10 miles.", 'duration': 241.768, 'highlights': ["The chapter explains the concept of interfaces and demonstrates the creation of a 'flyable' interface with a 'flies' field and 'fly' method, along with its implementation in a 'bird' class.", "The 'flyable' interface specifies the requirement for a field called 'flies' of type boolean and a method 'fly' that takes a double parameter representing the distance flown.", "The 'bird' class implements the 'flyable' interface by providing the 'flies' field and overriding the 'fly' method to print the distance flown if the bird can fly.", "The code is then tested by creating a bird object 'tweety' and invoking its 'fly' method to fly 10 miles."]}, {'end': 5182.797, 'start': 4933.728, 'title': 'Introduction to kotlin null safety', 'summary': 'Introduces kotlin null safety, emphasizing that null causes issues and kotlin aims to solve them, showing how to handle null values, use smart casts, force operator, and elvis operator, providing a comprehensive understanding of kotlin null safety for effective programming.', 'duration': 249.069, 'highlights': ['Kotlin aims to solve potential issues caused by null values, making it impossible to assign null by default and allowing null values to be assigned using a question mark, ensuring safer programming. null values handled by using a question mark', 'Functions may return null, and in such cases, the return type should be followed by a question mark to handle potential null values, ensuring safe programming practices. null return values handled by using a question mark after the return type', 'Kotlin provides for the opportunity of a null value if an if statement is used to protect it from danger, using smart casts to handle potential null values effectively. smart casts used to handle potential null values in if statements', 'The force operator, with two exclamation marks, can be used to force a null assignment, providing an option to handle null values. force operator used to handle null assignment', 'The Elvis operator can be used to assign a default value if the value could be null, enhancing the handling of potential null values in Kotlin programming. Elvis operator used to assign default value if the value is null']}], 'duration': 969.171, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/H_oGi8uuDpA/pics/H_oGi8uuDpA4213626.jpg', 'highlights': ['Covers kotlin programming concepts including maps, classes, regular expressions, object inheritance, interfaces, and null safety.', 'Demonstration of map implementation with a size of two The code demonstrates the implementation of a map in Kotlin, showcasing a map size of two.', "The chapter extensively covers the process of defining classes, attributes, and methods in Kotlin, emphasizing the use of inheritance to create a new class 'dog' that inherits from the 'animal' class.", "The chapter explains the concept of interfaces and demonstrates the creation of a 'flyable' interface with a 'flies' field and 'fly' method, along with its implementation in a 'bird' class.", 'Kotlin aims to solve potential issues caused by null values, making it impossible to assign null by default and allowing null values to be assigned using a question mark, ensuring safer programming.']}], 'highlights': ['The chapter covers the core syntax of Kotlin equivalent to a standard 250-300 page book.', 'Provides guidance on installing necessary software, including Java Development Kit and IntelliJ IDEA.', 'Demonstrates creating and running a Kotlin project.', 'Covers kotlin programming concepts including maps, classes, regular expressions, object inheritance, interfaces, and null safety.', 'Kotlin uses type inference, allowing it to automatically determine variable types based on the assigned value, increasing code readability and reducing verbosity.', 'Covers working with strings in Kotlin, including creating, manipulating, and comparing strings, as well as performing operations like getting string length, joining strings, getting specific characters, getting substrings, and checking for string containment.', 'The tutorial demonstrates adding 3 to each value in a range using a for loop, resulting in values like 4, 7, etc.', 'Demonstrating while loop to guess a random number from 1 to 50, showcasing the functionality of the random number generator and the while loop.', 'Exploring the use of collection operators like reduce and fold to perform operations on arrays, showcasing the difference between the two operators and their resulting outputs.', "Covers the process of defining classes, attributes, and methods in Kotlin, emphasizing the use of inheritance to create a new class 'dog' that inherits from the 'animal' class.", 'Kotlin aims to solve potential issues caused by null values, making it impossible to assign null by default and allowing null values to be assigned using a question mark, ensuring safer programming.']}