title
Clojure Tutorial

description
Get the Cheat Sheet : https://goo.gl/htKtbB Best Clojure Book : http://amzn.to/2A5WUnT https://www.patreon.com/derekbanas MY UDEMY COURSES ARE 87.5% OFF TIL January 16th ($9.99) One is FREE ➡️ Python Data Science Series for $9.99 : Highest Rated & Largest Python Udemy Course + 56 Hrs + 200 Videos + Data Science https://bit.ly/Master_Python_44 ➡️ C++ Programming Bootcamp Series for $9.99 : Over 23 Hrs + 53 Videos + Quizzes + Graded Assignments + New Videos Every Month https://bit.ly/C_Course_44 ➡️ FREE 15 hour Golang Course!!! : https://bit.ly/go-tutorial5 (100 Available) Install Emacs : https://youtu.be/Iagbv974GlQ?t=32s Install Clojure : https://youtu.be/Iagbv974GlQ?t=41m51s 00:00 Intro 00:39 Setup Project 03:14 Variables / Def 03:47 Data Types 07:19 Formatted Output 10:20 Strings 15:57 Lists 17:56 Sets 19:19 Vectors 20:43 Maps 23:25 Atoms / Watchers 27:25 Agents 30:19 Math 33:00 Basic Functions 37:57 Relational Operators 38:39 Logical Operators 39:07 If 40:00 Do 41:05 When 41:35 Cond 44:22 While 45:37 Dotimes 46:20 Loop 48:22 Doseq 49:21 File I/O 50:44 Exception Handling 55:39 Destructoring 56:49 Struct Maps 58:46 Anonymous Functions 1:00:58 Clojures 1:02:35 Filtering Lists 1:04:20 Macros Clojure is a functional programming language based on Lisp that runs on the JVM. In this one video we'll cover the core language in one video. Basically I condensed a 300 page book into one 1 hour video.

detail
{'title': 'Clojure Tutorial', 'heatmap': [{'end': 642.918, 'start': 598.114, 'weight': 0.735}, {'end': 1114.068, 'start': 982.783, 'weight': 0.956}, {'end': 1461.182, 'start': 1411.933, 'weight': 0.865}], 'summary': 'This clojure tutorial covers core syntax, project creation, printing code, output formatting, string and data structure manipulations, manipulating atoms and agents, clojure and python functions, decision making and looping, fileio, data structures, functions, and list filtering functions, and macros, providing in-depth explanations and examples throughout.', 'chapters': [{'end': 311.575, 'segs': [{'end': 51.764, 'src': 'embed', 'start': 0.506, 'weight': 0, 'content': [{'end': 3.427, 'text': 'Well hello internet and welcome to my Clojure video tutorial.', 'start': 0.506, 'duration': 2.921}, {'end': 8.109, 'text': "In this one tutorial I'm going to cover the core syntax of the entire language.", 'start': 3.467, 'duration': 4.642}, {'end': 14.391, 'text': "In the description underneath the video, you'll find time stamps to all the individual parts, so you don't have to watch everything all at once,", 'start': 8.189, 'duration': 6.202}, {'end': 17.872, 'text': "or you could just use this to look for specific things you're interested in.", 'start': 14.391, 'duration': 3.481}, {'end': 24.854, 'text': 'Also, in the description underneath the video, I have a link in which I show how to install both Emacs,', 'start': 18.132, 'duration': 6.722}, {'end': 28.915, 'text': 'as well as how to set up the whole entire Clojure system I have right here.', 'start': 24.854, 'duration': 4.061}, {'end': 31.375, 'text': "Of course, you don't need to use Emacs with Clojure.", 'start': 28.975, 'duration': 2.4}, {'end': 36.656, 'text': "Everything I cover here is going to work with any editor, but I just thought I'd use that because it's used everywhere else.", 'start': 31.415, 'duration': 5.241}, {'end': 38.617, 'text': "And I have a lot to do, so let's get into it.", 'start': 36.797, 'duration': 1.82}, {'end': 40.598, 'text': 'All right, so here is Emacs.', 'start': 38.877, 'duration': 1.721}, {'end': 44.981, 'text': "And what I'm going to do is I'm going to start off by creating a project.", 'start': 40.698, 'duration': 4.283}, {'end': 48.983, 'text': "And I'm going to use line and gen to create said project.", 'start': 45.281, 'duration': 3.702}, {'end': 51.764, 'text': 'And how you do that, this is just in a regular terminal.', 'start': 49.043, 'duration': 2.721}], 'summary': 'Clojure video tutorial covering core syntax and project creation', 'duration': 51.258, 'max_score': 0.506, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE506.jpg'}, {'end': 155.449, 'src': 'embed', 'start': 123.705, 'weight': 4, 'content': [{'end': 125.706, 'text': 'some code on the right and so forth and so on.', 'start': 123.705, 'duration': 2.001}, {'end': 135.234, 'text': "now, to get the code here to start executing, I'm gonna go MX and then I'm gonna type in cider, dash, Jack, dash and in,", 'start': 125.706, 'duration': 9.528}, {'end': 142.977, 'text': 'and you can see that everything came up here on the bottom of the screen cx and c plus plus and i can go cx and oh,', 'start': 135.234, 'duration': 7.743}, {'end': 146.538, 'text': 'jump over here and go cx and zero to close that.', 'start': 142.977, 'duration': 3.561}, {'end': 149.999, 'text': "so why don't i just have the code on the top and then run everything in the bottom?", 'start': 146.538, 'duration': 3.461}, {'end': 155.449, 'text': "so we can just go and increase that a little bit more, and there you go, you'll be able to see all that alright.", 'start': 149.999, 'duration': 5.45}], 'summary': 'Executing code using mx and cider-jack in c++ environment.', 'duration': 31.744, 'max_score': 123.705, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE123705.jpg'}, {'end': 211.248, 'src': 'embed', 'start': 185.107, 'weight': 3, 'content': [{'end': 192.755, 'text': 'I can just go and put parentheses and a dash and main and parentheses and you can see that hello world executes down there.', 'start': 185.107, 'duration': 7.648}, {'end': 195.737, 'text': 'So first thing I want to talk about is variables.', 'start': 193.035, 'duration': 2.702}, {'end': 202.622, 'text': "So variables are going to be immutable inside of closure, which means the value cannot be changed once it's set.", 'start': 196.137, 'duration': 6.485}, {'end': 207.225, 'text': "Of course, there are situations in which you can change, but I'll get into that as the tutorial continues.", 'start': 202.842, 'duration': 4.383}, {'end': 211.248, 'text': "And they're going to be defined by going D-E-F.", 'start': 207.726, 'duration': 3.522}], 'summary': "Tutorial covers immutable variables in closure, defined by 'def'.", 'duration': 26.141, 'max_score': 185.107, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE185107.jpg'}], 'start': 0.506, 'title': 'Clojure syntax and project creation in emacs', 'summary': 'Covers the core syntax of clojure, time stamps, and setting up the clojure system. it also explains creating a clojure project using emacs, defining namespaces, variables, data types, and functions, and executing code in the terminal.', 'chapters': [{'end': 36.656, 'start': 0.506, 'title': 'Clojure syntax tutorial', 'summary': 'Covers the core syntax of clojure, including time stamps for individual parts and guidance on installing emacs and setting up the clojure system.', 'duration': 36.15, 'highlights': ['The tutorial covers the core syntax of the entire Clojure language.', 'Time stamps for individual parts are provided in the video description.', 'Guidance on installing Emacs and setting up the Clojure system is offered.', 'The tutorial emphasizes that Emacs is not necessary for using Clojure, as the covered content is applicable to any editor.']}, {'end': 311.575, 'start': 36.797, 'title': 'Emacs tutorial for creating a clojure project', 'summary': 'Covers the process of creating a clojure project using emacs, including setting up the project, navigating through the directories, defining namespaces, variables, data types, and functions, and executing code in the terminal.', 'duration': 274.778, 'highlights': ["Creating a Clojure project using Emacs The chapter explains the process of creating a Clojure project using the 'lein new app' command in a regular terminal, applicable to Windows or Linux systems.", "Defining namespaces, variables, and data types The tutorial introduces the process of defining namespaces, immutable variables with 'def', and different data types such as long, double, and boolean in Clojure.", "Executing functions and code in the terminal The chapter demonstrates the execution of functions and code in the terminal using 'CX' commands and parentheses, and the explanation of function descriptions and arguments."]}], 'duration': 311.069, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE506.jpg', 'highlights': ['The tutorial covers the core syntax of the entire Clojure language.', 'Guidance on installing Emacs and setting up the Clojure system is offered.', "Creating a Clojure project using Emacs The chapter explains the process of creating a Clojure project using the 'lein new app' command in a regular terminal, applicable to Windows or Linux systems.", "Defining namespaces, variables, and data types The tutorial introduces the process of defining namespaces, immutable variables with 'def', and different data types such as long, double, and boolean in Clojure.", "Executing functions and code in the terminal The chapter demonstrates the execution of functions and code in the terminal using 'CX' commands and parentheses, and the explanation of function descriptions and arguments.", 'Time stamps for individual parts are provided in the video description.', 'The tutorial emphasizes that Emacs is not necessary for using Clojure, as the covered content is applicable to any editor.']}, {'end': 619.103, 'segs': [{'end': 364.259, 'src': 'embed', 'start': 311.935, 'weight': 0, 'content': [{'end': 315.278, 'text': 'And this is going to be how we are going to print out our code.', 'start': 311.935, 'duration': 3.343}, {'end': 315.878, 'text': 'All right.', 'start': 315.478, 'duration': 0.4}, {'end': 321.081, 'text': "So let's go and just get rid of Hello World directly out of there.", 'start': 315.958, 'duration': 5.123}, {'end': 323.663, 'text': "And let's go and write some code inside of this.", 'start': 321.341, 'duration': 2.322}, {'end': 324.563, 'text': 'All right.', 'start': 324.163, 'duration': 0.4}, {'end': 330.007, 'text': "So let's go define and we can say a long and 15.", 'start': 324.663, 'duration': 5.344}, {'end': 333.749, 'text': 'I can then come inside of here and go nil.', 'start': 330.007, 'duration': 3.742}, {'end': 336.61, 'text': 'Nil is what is used to check for no value.', 'start': 333.949, 'duration': 2.661}, {'end': 340.673, 'text': 'So I can go nil question mark and a long right like that.', 'start': 336.771, 'duration': 3.902}, {'end': 345.634, 'text': 'And I can jump down into the bottom and we can run this guy.', 'start': 341.273, 'duration': 4.361}, {'end': 347.154, 'text': 'Whoops, forgot to do something.', 'start': 345.874, 'duration': 1.28}, {'end': 351.035, 'text': 'CX and the letter O jump back up inside.', 'start': 347.675, 'duration': 3.36}, {'end': 357.077, 'text': 'And what I can do to recompile this is to just go CC and CK.', 'start': 351.395, 'duration': 5.682}, {'end': 358.237, 'text': "That's going to compile the code.", 'start': 357.117, 'duration': 1.12}, {'end': 362.638, 'text': 'And then I can jump back down inside of this guy and hit the meta key and P.', 'start': 358.537, 'duration': 4.101}, {'end': 364.259, 'text': 'and execute it.', 'start': 363.478, 'duration': 0.781}], 'summary': 'Demonstration of printing code, defining variables, and compiling with cc and ck.', 'duration': 52.324, 'max_score': 311.935, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE311935.jpg'}, {'end': 412.226, 'src': 'embed', 'start': 382.146, 'weight': 2, 'content': [{'end': 384.768, 'text': "And what I'm going to do is I'm going to come up inside of here and check that.", 'start': 382.146, 'duration': 2.622}, {'end': 388.789, 'text': 'And how you check for positive values is you just go pause and whatever.', 'start': 385.088, 'duration': 3.701}, {'end': 390.732, 'text': "And I'm going to say 15.", 'start': 389.189, 'duration': 1.543}, {'end': 392.633, 'text': 'you can see that that comes back as true.', 'start': 390.732, 'duration': 1.901}, {'end': 399.158, 'text': 'i can also check if something is negative by just going negative and question mark and you can see that that comes back as false.', 'start': 392.633, 'duration': 6.525}, {'end': 401.639, 'text': 'i could check if something is even see.', 'start': 399.158, 'duration': 2.481}, {'end': 403.52, 'text': 'once again that comes back as false.', 'start': 401.639, 'duration': 1.881}, {'end': 407.843, 'text': 'i can also come in and check if something is odd and that comes back as true.', 'start': 403.52, 'duration': 4.323}, {'end': 412.226, 'text': 'we can check if something is a number with number and the question mark.', 'start': 407.843, 'duration': 4.383}], 'summary': 'Checked positive, negative, even, odd values. positive: 15, negative: false, even: false, odd: true.', 'duration': 30.08, 'max_score': 382.146, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE382146.jpg'}, {'end': 462.287, 'src': 'embed', 'start': 434.581, 'weight': 1, 'content': [{'end': 439.084, 'text': "All right, so there's just a rundown of using variables and different data types.", 'start': 434.581, 'duration': 4.503}, {'end': 442.306, 'text': "And now I'd like to talk about how we can format our output.", 'start': 439.184, 'duration': 3.122}, {'end': 445.659, 'text': 'Okay So I am going to be able to use format.', 'start': 442.634, 'duration': 3.025}, {'end': 451.129, 'text': "I'm going to be able to use print, print line, string concatenators, so many different commands that are available.", 'start': 445.72, 'duration': 5.409}, {'end': 452.903, 'text': 'i just want to cover a couple things here.', 'start': 451.522, 'duration': 1.381}, {'end': 453.803, 'text': 'so this is format.', 'start': 452.903, 'duration': 0.9}, {'end': 457.425, 'text': "so let's say i want to put a string directly inside of a string.", 'start': 453.803, 'duration': 3.622}, {'end': 462.287, 'text': 'i can do something like this is a string and a percent sign and s.', 'start': 457.425, 'duration': 4.862}], 'summary': 'Covered using variables, data types, and formatting output in programming.', 'duration': 27.706, 'max_score': 434.581, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE434581.jpg'}, {'end': 498.716, 'src': 'embed', 'start': 470.091, 'weight': 3, 'content': [{'end': 479.356, 'text': "let's go define a string and let's just give it the value of hello, because that works, And I'm going to do a couple of these different guys.", 'start': 470.091, 'duration': 9.265}, {'end': 489.126, 'text': 'We can also come in and use the format again to add spaces so I can do something like five spaces.', 'start': 479.656, 'duration': 9.47}, {'end': 495.633, 'text': "And then I'm going to go and put the percent sign again and five and D.", 'start': 490.167, 'duration': 5.466}, {'end': 497.975, 'text': "And let's say I want to do that with a long.", 'start': 495.633, 'duration': 2.342}, {'end': 498.716, 'text': 'We can do that.', 'start': 498.055, 'duration': 0.661}], 'summary': 'Demonstrating string manipulation and formatting with examples.', 'duration': 28.625, 'max_score': 470.091, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE470091.jpg'}, {'end': 626.748, 'src': 'embed', 'start': 598.114, 'weight': 5, 'content': [{'end': 600.095, 'text': 'You can see there we have our spaces.', 'start': 598.114, 'duration': 1.981}, {'end': 604.996, 'text': 'See there we have leading zeros right there, left justified.', 'start': 600.475, 'duration': 4.521}, {'end': 610.658, 'text': 'And then finally you can see how it is putting in only three decimal places for a double.', 'start': 605.177, 'duration': 5.481}, {'end': 614.98, 'text': 'Well, I guess our double only had three spaces, but either way it would work if you had five.', 'start': 610.678, 'duration': 4.302}, {'end': 619.103, 'text': 'Alright, so there is a whole bunch of ways of formatting output.', 'start': 615.18, 'duration': 3.923}, {'end': 624.346, 'text': "And now what I'd like to do is show you how we can do a whole ton of things with strings.", 'start': 619.483, 'duration': 4.863}, {'end': 626.748, 'text': "Alright, so let's define a string.", 'start': 624.786, 'duration': 1.962}], 'summary': 'Demonstration of formatting output and working with strings.', 'duration': 28.634, 'max_score': 598.114, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE598114.jpg'}], 'start': 311.935, 'title': 'Printing code and output formatting', 'summary': 'Covers printing code, defining a long and using nil to check for no value, recompiling the code, and using commands to check for positive, negative, even, odd, number, integer, and float values. it also provides an introduction to formatting output in programming, covering the usage of format, print, print line, string concatenators, and various commands to format strings, integers, longs, and doubles in java.', 'chapters': [{'end': 419.252, 'start': 311.935, 'title': 'Printing code and using commands', 'summary': 'Covers printing code, defining a long and using nil to check for no value, recompiling the code, and using commands to check for positive, negative, even, odd, number, integer, and float values.', 'duration': 107.317, 'highlights': ['The chapter covers how to print out code, including defining a long and using nil to check for no value, with examples such as checking for positive, negative, even, odd, number, integer, and float values.', "The process of recompiling the code is demonstrated using the 'CC' and 'CK' commands.", "Explains the use of commands like 'pause', 'negative', 'even', 'odd', 'number', 'integer', and 'float' to check for specific values, with examples including 15 as positive, and checking for negative, even, odd, number, integer, and float values."]}, {'end': 619.103, 'start': 419.653, 'title': 'Introduction to output formatting', 'summary': 'Provides an introduction to formatting output in programming, covering the usage of format, print, print line, string concatenators, and various commands to format strings, integers, longs, and doubles in java.', 'duration': 199.45, 'highlights': ["Using format to put a string directly inside of a string, and defining strings with values such as 'hello' and formatting them with spaces and leading zeros.", 'Defining long values, formatting them with leading zeros and left-justified, and similar operations with doubles, including specifying decimal places.', 'An overview of various ways to format output, including examples of formatted output for strings, integers, longs, and doubles.']}], 'duration': 307.168, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE311935.jpg', 'highlights': ['The chapter covers how to print out code, including defining a long and using nil to check for no value, with examples such as checking for positive, negative, even, odd, number, integer, and float values.', 'An overview of various ways to format output, including examples of formatted output for strings, integers, longs, and doubles.', "Explains the use of commands like 'pause', 'negative', 'even', 'odd', 'number', 'integer', and 'float' to check for specific values, with examples including 15 as positive, and checking for negative, even, odd, number, integer, and float values.", "Using format to put a string directly inside of a string, and defining strings with values such as 'hello' and formatting them with spaces and leading zeros.", "The process of recompiling the code is demonstrated using the 'CC' and 'CK' commands.", 'Defining long values, formatting them with leading zeros and left-justified, and similar operations with doubles, including specifying decimal places.']}, {'end': 1405.126, 'segs': [{'end': 648.624, 'src': 'embed', 'start': 619.483, 'weight': 0, 'content': [{'end': 624.346, 'text': "And now what I'd like to do is show you how we can do a whole ton of things with strings.", 'start': 619.483, 'duration': 4.863}, {'end': 626.748, 'text': "Alright, so let's define a string.", 'start': 624.786, 'duration': 1.962}, {'end': 628.248, 'text': "I'm going to just call this str1.", 'start': 626.768, 'duration': 1.48}, {'end': 634.653, 'text': "And I'm going to say this is my second string.", 'start': 628.469, 'duration': 6.184}, {'end': 636.154, 'text': 'So we defined that.', 'start': 634.993, 'duration': 1.161}, {'end': 638.275, 'text': 'And now we can do a whole bunch of manipulations with it.', 'start': 636.214, 'duration': 2.061}, {'end': 642.918, 'text': 'I can check if it is blank or not by just going string.', 'start': 638.535, 'duration': 4.383}, {'end': 648.624, 'text': "And then we're going to go blank and question mark str1.", 'start': 643.118, 'duration': 5.506}], 'summary': 'Demonstration of string manipulations and checking for blank strings.', 'duration': 29.141, 'max_score': 619.483, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE619483.jpg'}, {'end': 973.917, 'src': 'embed', 'start': 949.011, 'weight': 1, 'content': [{'end': 954.632, 'text': "All right, so there is a rundown of the core functions you're going to use to work with strings.", 'start': 949.011, 'duration': 5.621}, {'end': 958.413, 'text': "And now I'd like to talk about our first collection, which is lists.", 'start': 955.032, 'duration': 3.381}, {'end': 961.934, 'text': "OK, so everything I'm doing here, of course, is still inside of main.", 'start': 958.913, 'duration': 3.021}, {'end': 968.256, 'text': 'Now, basically, a list is just going to store a list of values, and it can store multiple different data types.', 'start': 962.154, 'duration': 6.102}, {'end': 971.056, 'text': "So let's come in and we'll go print line.", 'start': 968.516, 'duration': 2.54}, {'end': 973.917, 'text': 'And to create a list, you just start it with list.', 'start': 971.816, 'duration': 2.101}], 'summary': 'Introduction to working with strings and creating lists in main function.', 'duration': 24.906, 'max_score': 949.011, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE949011.jpg'}, {'end': 1114.068, 'src': 'heatmap', 'start': 982.783, 'weight': 0.956, 'content': [{'end': 988.708, 'text': "and there we go and if i execute that down on the bottom, you're going to see all of the list items that i have inside of there.", 'start': 982.783, 'duration': 5.925}, {'end': 996.774, 'text': "we could also come in here and you can also see i'm using print line that is going to go and get whatever i give to it and then put a new line at the end of it.", 'start': 988.708, 'duration': 8.066}, {'end': 1000.016, 'text': 'i can also use first, which is actually very useful,', 'start': 996.774, 'duration': 3.242}, {'end': 1009.643, 'text': "as you're going to see later and i could do something like list and two and three and I executed that and you can see that one comes back down at the bottom of the screen.", 'start': 1000.016, 'duration': 9.627}, {'end': 1014.366, 'text': 'I can also come in here and get everything except that and you can see down at the bottom.', 'start': 1009.643, 'duration': 4.723}, {'end': 1015.727, 'text': 'two and three come back.', 'start': 1014.366, 'duration': 1.361}, {'end': 1025.032, 'text': "I can also get a specifically defined index and how you do that is by going nth and then right inside here let's say I want to go and get index one.", 'start': 1015.727, 'duration': 9.305}, {'end': 1042.305, 'text': "I can do so and you see that that comes back as two and also be able to come in here and add values to my list and And how I specifically do that is go list and star and then let's say I have one and two and then I want to add in three as well as four.", 'start': 1025.032, 'duration': 17.273}, {'end': 1043.464, 'text': 'Of course I can do that.', 'start': 1042.325, 'duration': 1.139}, {'end': 1047.448, 'text': 'Whoops got a little bit of an error probably because I had too many parentheses inside of there.', 'start': 1043.806, 'duration': 3.642}, {'end': 1049.17, 'text': 'Yes that was what it was.', 'start': 1047.769, 'duration': 1.401}, {'end': 1053.753, 'text': 'Actually I need to get rid of that parentheses right there and there that should be fine.', 'start': 1049.65, 'duration': 4.103}, {'end': 1057.598, 'text': 'And you can see at the bottom I got 1, 2, 3, and 4.', 'start': 1054.093, 'duration': 3.505}, {'end': 1063.365, 'text': 'And then I would also be able to add one value to the left of a list by going cons.', 'start': 1057.598, 'duration': 5.767}, {'end': 1065.387, 'text': "And let's say I want to throw 3 inside of there.", 'start': 1063.405, 'duration': 1.982}, {'end': 1066.228, 'text': 'Just do that.', 'start': 1065.467, 'duration': 0.761}, {'end': 1067.209, 'text': 'Put that there.', 'start': 1066.489, 'duration': 0.72}, {'end': 1069.472, 'text': 'And then throw one more parentheses at the end.', 'start': 1067.53, 'duration': 1.942}, {'end': 1072.002, 'text': 'And you can see at the bottom I have 3, 1, 2.', 'start': 1069.793, 'duration': 2.209}, {'end': 1075.505, 'text': "All right, so there's a whole bunch of different ways of working with lists.", 'start': 1072.003, 'duration': 3.502}, {'end': 1077.746, 'text': 'And now what I want to talk about are sets.', 'start': 1075.725, 'duration': 2.021}, {'end': 1082.328, 'text': 'Okay, so sets are going to be lists of unique values.', 'start': 1078.226, 'duration': 4.102}, {'end': 1084.95, 'text': 'And how you create one of those is you go set.', 'start': 1082.608, 'duration': 2.342}, {'end': 1089.952, 'text': "And then what I'm going to do after that is I'm going to put a single quote inside of there.", 'start': 1085.23, 'duration': 4.722}, {'end': 1093.734, 'text': "And let's go and throw one and one and two inside of there.", 'start': 1090.352, 'duration': 3.382}, {'end': 1097.096, 'text': 'And if I execute that, you can see that it only shows the one value.', 'start': 1093.974, 'duration': 3.122}, {'end': 1099.797, 'text': "So like I said, it's going to be unique values.", 'start': 1097.136, 'duration': 2.661}, {'end': 1105.221, 'text': "I'm going to be able to get specific indexes inside of a set just by using get.", 'start': 1100.137, 'duration': 5.084}, {'end': 1107.823, 'text': "And let's say that this is three and two.", 'start': 1105.621, 'duration': 2.202}, {'end': 1112.987, 'text': "Then what I'm going to do outside of here is let's say I want to get the second index.", 'start': 1108.163, 'duration': 4.824}, {'end': 1114.068, 'text': 'I can put that right there.', 'start': 1113.047, 'duration': 1.021}], 'summary': 'Demonstrates working with lists and sets, including adding, accessing, and unique values.', 'duration': 131.285, 'max_score': 982.783, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE982783.jpg'}, {'end': 1099.797, 'src': 'embed', 'start': 1069.793, 'weight': 3, 'content': [{'end': 1072.002, 'text': 'And you can see at the bottom I have 3, 1, 2.', 'start': 1069.793, 'duration': 2.209}, {'end': 1075.505, 'text': "All right, so there's a whole bunch of different ways of working with lists.", 'start': 1072.003, 'duration': 3.502}, {'end': 1077.746, 'text': 'And now what I want to talk about are sets.', 'start': 1075.725, 'duration': 2.021}, {'end': 1082.328, 'text': 'Okay, so sets are going to be lists of unique values.', 'start': 1078.226, 'duration': 4.102}, {'end': 1084.95, 'text': 'And how you create one of those is you go set.', 'start': 1082.608, 'duration': 2.342}, {'end': 1089.952, 'text': "And then what I'm going to do after that is I'm going to put a single quote inside of there.", 'start': 1085.23, 'duration': 4.722}, {'end': 1093.734, 'text': "And let's go and throw one and one and two inside of there.", 'start': 1090.352, 'duration': 3.382}, {'end': 1097.096, 'text': 'And if I execute that, you can see that it only shows the one value.', 'start': 1093.974, 'duration': 3.122}, {'end': 1099.797, 'text': "So like I said, it's going to be unique values.", 'start': 1097.136, 'duration': 2.661}], 'summary': 'Introduction to sets with example of creating a set containing unique values 1 and 2', 'duration': 30.004, 'max_score': 1069.793, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1069793.jpg'}, {'end': 1269.593, 'src': 'embed', 'start': 1243.809, 'weight': 2, 'content': [{'end': 1254.776, 'text': "Now a map is just a collection of key value pairs, and to create a map we're just going to go hash and map and we can just define our key,", 'start': 1243.809, 'duration': 10.967}, {'end': 1261.441, 'text': 'which is going to be name, and then we can put in our actual value, and then you just keep on going.', 'start': 1254.776, 'duration': 6.665}, {'end': 1262.382, 'text': 'next one.', 'start': 1261.741, 'duration': 0.641}, {'end': 1269.593, 'text': "it just knows that the next one's going to be your key, and then you can just put whatever you'd like inside of there, and if you go and execute that,", 'start': 1262.382, 'duration': 7.211}], 'summary': 'Creating a map involves defining key-value pairs using hash and map, allowing for easy addition of data.', 'duration': 25.784, 'max_score': 1243.809, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1243809.jpg'}], 'start': 619.483, 'title': 'String and data structure manipulations in programming', 'summary': 'Covers various string manipulations such as checking for blank strings, substring presence, finding match index, splitting and joining strings, as well as working with lists, sets, vectors, and maps, demonstrating creation, manipulation, and retrieval operations.', 'chapters': [{'end': 800.978, 'start': 619.483, 'title': 'String manipulation in programming', 'summary': 'Demonstrates various string manipulations, including checking for blank strings, checking for substring presence, finding the index of a match, splitting a string, and joining a collection, with examples and usage instructions.', 'duration': 181.495, 'highlights': ['The chapter demonstrates various string manipulations, including checking for blank strings, checking for substring presence, finding the index of a match, splitting a string, and joining a collection. The transcript covers a range of string manipulation techniques, such as checking for blank strings, checking for substring presence, finding the index of a match, splitting a string, and joining a collection.', 'Examples of checking for substring presence are provided, showing both positive and negative results. The examples illustrate checking for substring presence, demonstrating both positive and negative results.', 'Usage instructions for splitting a string into a vector are outlined, with a specific example using the hash symbol as the delimiter. The usage instructions for splitting a string into a vector are provided, along with a specific example using the hash symbol as the delimiter.', 'Instructions for joining a collection with a space between elements are mentioned, with a brief explanation of what a collection is. The instructions for joining a collection with a space between elements are outlined, along with a brief explanation of what a collection is.', 'A mention of using regular expression replace is included, with an example of replacing a specific pattern. The transcript includes a mention of using regular expression replace, along with an example of replacing a specific pattern.']}, {'end': 1405.126, 'start': 800.978, 'title': 'Working with strings, lists, sets, vectors, and maps', 'summary': 'Covers working with strings, including functions like replacing, trimming, uppercase and lowercase, followed by a rundown of lists, sets, vectors, and maps, demonstrating creation, manipulation, and retrieval operations.', 'duration': 604.148, 'highlights': ['Demonstrated functions for working with strings include replacing, trimming, uppercase, and lowercase, providing a comprehensive overview of string manipulation operations. ', 'Explained the creation, manipulation, and retrieval operations of lists, showcasing various methods such as accessing specific indexes, adding and removing elements, and creating new lists. ', 'Illustrated the creation and manipulation of sets, including appending, checking for specific values, and removing elements, elucidating the unique values property of sets. ', 'Outlined the creation and manipulation of vectors, covering indexing, appending elements, removing elements, and extracting sub-vectors, providing a comprehensive overview of vector operations. ', 'Explained the creation and manipulation of maps, including creation, retrieval of values based on keys, checking for specific keys, obtaining lists of keys and values, and merging maps, demonstrating the diverse operations of maps. ']}], 'duration': 785.643, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE619483.jpg', 'highlights': ['Covers various string manipulations such as checking for blank strings, substring presence, finding match index, splitting and joining strings, as well as working with lists, sets, vectors, and maps, demonstrating creation, manipulation, and retrieval operations.', 'Explained the creation, manipulation, and retrieval operations of lists, showcasing various methods such as accessing specific indexes, adding and removing elements, and creating new lists.', 'Explained the creation and manipulation of maps, including creation, retrieval of values based on keys, checking for specific keys, obtaining lists of keys and values, and merging maps, demonstrating the diverse operations of maps.', 'Illustrated the creation and manipulation of sets, including appending, checking for specific values, and removing elements, elucidating the unique values property of sets.', 'Demonstrated functions for working with strings include replacing, trimming, uppercase, and lowercase, providing a comprehensive overview of string manipulation operations.']}, {'end': 1791.797, 'segs': [{'end': 1461.182, 'src': 'heatmap', 'start': 1405.126, 'weight': 1, 'content': [{'end': 1411.933, 'text': "and now I want to talk about atoms and to cover atoms, I'm gonna go into a vertical format so you can see a little bit better.", 'start': 1405.126, 'duration': 6.807}, {'end': 1413.614, 'text': "basically, I'm gonna create a function here.", 'start': 1411.933, 'duration': 1.681}, {'end': 1415.776, 'text': "it's gonna demonstrate all the different things you do with that.", 'start': 1413.614, 'duration': 2.162}, {'end': 1420.861, 'text': "Basically, with atoms, you are going to actually be able to change a variable's value.", 'start': 1416.236, 'duration': 4.625}, {'end': 1423.583, 'text': "So what I'm gonna do is I'm gonna define a function.", 'start': 1420.881, 'duration': 2.702}, {'end': 1427.147, 'text': "This is how we, I'm gonna get more specifically into functions here in a bit.", 'start': 1423.624, 'duration': 3.523}, {'end': 1429.689, 'text': 'But this is the function, how we define it.', 'start': 1427.327, 'duration': 2.362}, {'end': 1432.192, 'text': "It's called atom ex for atom example.", 'start': 1429.709, 'duration': 2.483}, {'end': 1435.957, 'text': "It's going to receive one attribute passed to it.", 'start': 1432.552, 'duration': 3.405}, {'end': 1440.242, 'text': "And if you want to define an atom's value, you do define just like before.", 'start': 1436.417, 'duration': 3.825}, {'end': 1442.965, 'text': "And I'm going to call this atom ex.", 'start': 1440.723, 'duration': 2.242}, {'end': 1450.155, 'text': "And then I'm going to go and create atom and x using x as our value that we're going to assign to our atom.", 'start': 1443.466, 'duration': 6.689}, {'end': 1455.978, 'text': "Now watchers can be attached to atoms as well as agents, which you're going to see here in a minute,", 'start': 1450.575, 'duration': 5.403}, {'end': 1461.182, 'text': 'and they can then be used to run functions whenever a value changes and to create a watcher.', 'start': 1455.978, 'duration': 5.204}], 'summary': 'Demonstrating atoms and functions for value changes in programming.', 'duration': 56.056, 'max_score': 1405.126, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1405126.jpg'}, {'end': 1566.926, 'src': 'embed', 'start': 1542.712, 'weight': 6, 'content': [{'end': 1551.077, 'text': "and to do that you go swap exclamation point atom ex and let's say i want to increment the value that is inside of there.", 'start': 1542.712, 'duration': 8.365}, {'end': 1554.719, 'text': 'i can do so and you can put any function in there, not just increment.', 'start': 1551.077, 'duration': 3.642}, {'end': 1565.545, 'text': "and then i'll say increment x and once again get the value of our atom with the at sign ex and then finally let's close off our function altogether.", 'start': 1554.719, 'duration': 10.826}, {'end': 1566.926, 'text': 'And there that did that.', 'start': 1565.905, 'duration': 1.021}], 'summary': 'Demonstrated using swap and functions to manipulate values inside atom.', 'duration': 24.214, 'max_score': 1542.712, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1542712.jpg'}, {'end': 1647.772, 'src': 'embed', 'start': 1618.888, 'weight': 0, 'content': [{'end': 1622.35, 'text': 'You could see here, Adam EX changed from five to 10.', 'start': 1618.888, 'duration': 3.462}, {'end': 1624.812, 'text': 'And you can see right there that we printed the change.', 'start': 1622.35, 'duration': 2.462}, {'end': 1628.274, 'text': 'And then we can see once again, Adam EX changed from 10 to 11.', 'start': 1625.072, 'duration': 3.202}, {'end': 1631.456, 'text': 'You can see the watcher is called before the actual change takes place.', 'start': 1628.274, 'duration': 3.182}, {'end': 1634.246, 'text': 'And then you can see incremented it to 11.', 'start': 1631.676, 'duration': 2.57}, {'end': 1640.389, 'text': 'All right, so it is possible to change values using atoms if you should so want to do that.', 'start': 1634.246, 'duration': 6.143}, {'end': 1647.772, 'text': "And since I'm talking about that, I'm going to talk about another way to change values, and that is through the use of what are called agents.", 'start': 1640.609, 'duration': 7.163}], 'summary': 'Adam ex changed from 5 to 10, and then from 10 to 11. watcher called before change.', 'duration': 28.884, 'max_score': 1618.888, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1618888.jpg'}, {'end': 1684.991, 'src': 'embed', 'start': 1660.395, 'weight': 3, 'content': [{'end': 1667.358, 'text': "If you want to create an agent, you let's say we wanted to check the number of tickets that we're selling for a show or something.", 'start': 1660.395, 'duration': 6.963}, {'end': 1673.782, 'text': "I'll call this tickets, tickets sold, and I'm going to give it a starting value of zero because we didn't sell any tickets yet.", 'start': 1667.418, 'duration': 6.364}, {'end': 1677.165, 'text': "We're then going to be able to add a value to an agent.", 'start': 1673.902, 'duration': 3.263}, {'end': 1680.808, 'text': "So it starts off at zero and we'll go tickets sold.", 'start': 1677.365, 'duration': 3.443}, {'end': 1684.991, 'text': 'And we will say that we want to change the value to 15.', 'start': 1681.488, 'duration': 3.503}], 'summary': 'Creating an agent to track ticket sales, starting at 0 and increasing to 15.', 'duration': 24.596, 'max_score': 1660.395, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1660395.jpg'}, {'end': 1791.797, 'src': 'embed', 'start': 1742.891, 'weight': 4, 'content': [{'end': 1750.676, 'text': 'Now you see the tickets 15 shows up, but another way that we can do is we can call for us to wait for a value to update.', 'start': 1742.891, 'duration': 7.785}, {'end': 1754.058, 'text': 'And how you do that is with a function called a wait for.', 'start': 1750.916, 'duration': 3.142}, {'end': 1761.673, 'text': "so here what i'm going to do is i'm going to go send and tickets sold once again plus 10, and then i'm going to call await,", 'start': 1754.458, 'duration': 7.215}, {'end': 1769.952, 'text': "for so i'll say await for 100 tickets sold and it's gonna give it a chance to update.", 'start': 1761.673, 'duration': 8.279}, {'end': 1774.213, 'text': 'and now, whenever I call print line, it is going to be perfectly fine.', 'start': 1769.952, 'duration': 4.261}, {'end': 1779.574, 'text': 'so I can go tickets and at and tickets sold.', 'start': 1774.213, 'duration': 5.361}, {'end': 1783.895, 'text': "and another thing that you need to do is shut down your agents whenever you're done,", 'start': 1779.574, 'duration': 4.321}, {'end': 1790.497, 'text': "and so I'm gonna go shut down and agents and I'm going to compile this guy and save it.", 'start': 1783.895, 'duration': 6.602}, {'end': 1791.797, 'text': "don't have any errors, cool.", 'start': 1790.497, 'duration': 1.3}], 'summary': 'Using await for function, update tickets sold and shut down agents to avoid errors.', 'duration': 48.906, 'max_score': 1742.891, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1742891.jpg'}], 'start': 1405.126, 'title': 'Manipulating atoms and agents in clojure', 'summary': 'Covers defining functions, attaching watchers to atoms, manipulating atom values, and changing values using atoms and agents in clojure, with examples and bug solutions, emphasizing agent shutdown after use.', 'chapters': [{'end': 1442.965, 'start': 1405.126, 'title': 'Atoms and functions', 'summary': "Discusses the creation of a function to demonstrate the manipulation of atoms, particularly focusing on defining the function and changing a variable's value.", 'duration': 37.839, 'highlights': ["The function 'atom ex' is created to showcase the manipulation of atoms, specifically focusing on defining the function and changing a variable's value.", "The function receives one attribute and demonstrates how to define an atom's value.", 'The chapter delves into the specifics of defining functions and manipulating atoms.']}, {'end': 1618.608, 'start': 1443.466, 'title': 'Understanding watchers and atom manipulation', 'summary': 'Covers the use of watchers and atom manipulation in a programming language, demonstrating how to attach watchers to atoms, run functions when values change, and manipulate atom values, with examples of adding watchers and changing atom values.', 'duration': 175.142, 'highlights': ['The process of attaching watchers to atoms and running functions when values change is explained, with examples of adding and defining watchers and accessing old and new values within atoms.', 'Demonstrating the manipulation of atom values through resetting, swapping, and using functions, with a specific example of incrementing the atom value.', 'The chapter also provides an example of calling the main function and passing a value to initiate the demonstration of atom manipulation.']}, {'end': 1791.797, 'start': 1618.888, 'title': 'Changing values with atoms and agents', 'summary': 'Discusses how to change values using atoms and agents in clojure, demonstrating the process with code examples and addressing common bugs and their solutions, ending with the importance of shutting down agents after use.', 'duration': 172.909, 'highlights': ['The process of changing values using atoms and agents in Clojure is explained, with a demonstration of changing a value from 5 to 10 and then from 10 to 11 using atoms.', 'The concept of agents in Clojure is introduced, emphasizing their capability to change values using functions and providing an example of changing the value of tickets sold from 0 to 15.', "The issue of a value not updating immediately is highlighted, and the solution involving 'await for' function to allow the value to update is demonstrated, ensuring the accurate display of the updated value.", "The importance of shutting down agents after use is emphasized, with the 'shut down' function mentioned as a crucial step to be taken when finished using agents."]}], 'duration': 386.671, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1405126.jpg', 'highlights': ['The process of changing values using atoms and agents in Clojure is explained, with a demonstration of changing a value from 5 to 10 and then from 10 to 11 using atoms.', 'The process of attaching watchers to atoms and running functions when values change is explained, with examples of adding and defining watchers and accessing old and new values within atoms.', "The function 'atom ex' is created to showcase the manipulation of atoms, specifically focusing on defining the function and changing a variable's value.", 'The concept of agents in Clojure is introduced, emphasizing their capability to change values using functions and providing an example of changing the value of tickets sold from 0 to 15.', "The issue of a value not updating immediately is highlighted, and the solution involving 'await for' function to allow the value to update is demonstrated, ensuring the accurate display of the updated value.", 'The chapter delves into the specifics of defining functions and manipulating atoms.', 'Demonstrating the manipulation of atom values through resetting, swapping, and using functions, with a specific example of incrementing the atom value.', "The importance of shutting down agents after use is emphasized, with the 'shut down' function mentioned as a crucial step to be taken when finished using agents.", "The function receives one attribute and demonstrates how to define an atom's value.", 'The chapter also provides an example of calling the main function and passing a value to initiate the demonstration of atom manipulation.']}, {'end': 2272.838, 'segs': [{'end': 1841.565, 'src': 'embed', 'start': 1815.117, 'weight': 0, 'content': [{'end': 1820.579, 'text': 'So there is a rundown of a lot of the things you can do with agents and now I want to talk about our math functions.', 'start': 1815.117, 'duration': 5.462}, {'end': 1824.98, 'text': 'Okay, as per math functions, there are many of them, of course,', 'start': 1820.819, 'duration': 4.161}, {'end': 1830.462, 'text': "and you're going to do this a little bit different in Clojure than you might be used to in other languages.", 'start': 1824.98, 'duration': 5.482}, {'end': 1837.704, 'text': "So let's say we wanted to add a couple numbers we would first put in the operator we wanted to use and then followed with the things we wanted to add.", 'start': 1830.502, 'duration': 7.202}, {'end': 1841.565, 'text': "And likewise, it's going to be like that for everything else.", 'start': 1837.904, 'duration': 3.661}], 'summary': 'In clojure, math functions are used differently than in other languages, requiring the operator first and then the numbers to be added.', 'duration': 26.448, 'max_score': 1815.117, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1815117.jpg'}, {'end': 2076.27, 'src': 'embed', 'start': 2051.795, 'weight': 2, 'content': [{'end': 2057.359, 'text': "You're also going to be able to receive an unknown number of parameters or attributes, whatever you want to call them.", 'start': 2051.795, 'duration': 5.564}, {'end': 2060.842, 'text': "So let's go call this GetSumMore.", 'start': 2057.679, 'duration': 3.163}, {'end': 2069.228, 'text': "And I'm going to define first off what I'm going to do if I receive three parameters inside of here.", 'start': 2061.862, 'duration': 7.366}, {'end': 2071.708, 'text': "I'm going to get the sum of them, of course.", 'start': 2069.547, 'duration': 2.161}, {'end': 2076.27, 'text': "So that's just going to be X, Y, and Z.", 'start': 2072.049, 'duration': 4.221}], 'summary': 'Create a function getsummore to receive an unknown number of parameters and calculate their sum.', 'duration': 24.475, 'max_score': 2051.795, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2051795.jpg'}], 'start': 1792.432, 'title': 'Clojure and python functions', 'summary': 'Provides an overview of clojure math functions covering addition, subtraction, multiplication, division, modulus, increment, decrement, absolute value, cube root, square root, rounding, logarithms, max and min value calculation, power calculation, generation of random values, trigonometric functions, and operation on collections. it also covers defining functions in python, including creating functions with parameters, returning values, handling unknown number of parameters, and working with lists as parameters, demonstrating code execution and output.', 'chapters': [{'end': 1983.072, 'start': 1792.432, 'title': 'Clojure math functions overview', 'summary': 'Provides an overview of clojure math functions, demonstrating the use of line and gen repo to perform various mathematical operations, including addition, subtraction, multiplication, division, modulus, increment, decrement, absolute value, cube root, square root, rounding, logarithms, max and min value calculation, power calculation, generation of random values, trigonometric functions, and operation on collections.', 'duration': 190.64, 'highlights': ['The chapter provides an overview of Clojure math functions It covers a wide range of mathematical operations, including addition, subtraction, multiplication, division, modulus, increment, decrement, absolute value, cube root, square root, rounding, logarithms, max and min value calculation, power calculation, generation of random values, trigonometric functions, and operation on collections.', 'Demonstration of using line and gen repo for mathematical operations The speaker demonstrates the use of line and gen repo to perform various mathematical operations, showcasing the practical application of Clojure math functions.', 'Explanation of different mathematical operations in Clojure The explanation includes the syntax and usage of operators for addition, subtraction, multiplication, division, and modulus in Clojure, providing a clear understanding of performing basic mathematical operations in the language.']}, {'end': 2272.838, 'start': 1983.452, 'title': 'Defining functions in python', 'summary': 'Covers defining functions in python, including creating functions with parameters, returning values, handling unknown number of parameters, and working with lists as parameters, demonstrating code execution and output.', 'duration': 289.386, 'highlights': ['Creating functions with parameters, such as say hello and GetSum, to receive and process specific input values.', 'Demonstrating the ability to handle an unknown number of parameters with GetSumMore, processing different numbers of passed attributes.', 'Working with lists as parameters, as shown with the hello all function, to process multiple values efficiently.']}], 'duration': 480.406, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE1792432.jpg', 'highlights': ['The chapter provides an overview of Clojure math functions covering a wide range of mathematical operations.', 'Demonstration of using line and gen repo for mathematical operations showcasing the practical application of Clojure math functions.', 'Creating functions with parameters, such as say hello and GetSum, to receive and process specific input values.', 'Explanation of different mathematical operations in Clojure, including the syntax and usage of operators for basic mathematical operations.']}, {'end': 2954.534, 'segs': [{'end': 2304.734, 'src': 'embed', 'start': 2272.858, 'weight': 0, 'content': [{'end': 2275.76, 'text': "We're going to do advanced functions here very, very soon.", 'start': 2272.858, 'duration': 2.902}, {'end': 2277.801, 'text': 'But now I want to talk about decision making.', 'start': 2275.86, 'duration': 1.941}, {'end': 2282.064, 'text': 'Now in regards to decision making, we need to understand relational operators.', 'start': 2278.018, 'duration': 4.046}, {'end': 2286.491, 'text': "Now if you want to check for equality, you're going to use equals, not double equals.", 'start': 2282.184, 'duration': 4.307}, {'end': 2290.878, 'text': "If you want to check for not equal, that's actually going to be not equal like that.", 'start': 2286.811, 'duration': 4.067}, {'end': 2292.709, 'text': 'Everything else is going to be the same.', 'start': 2291.488, 'duration': 1.221}, {'end': 2296.91, 'text': 'So less than, greater than, greater than or equal to, less than or equal to.', 'start': 2292.769, 'duration': 4.141}, {'end': 2299.031, 'text': "And here I'll just give you a couple quick examples.", 'start': 2296.93, 'duration': 2.101}, {'end': 2304.734, 'text': "Again, you're going to first put your operator and then you're going to follow that up with the two things that you want to check for.", 'start': 2299.351, 'duration': 5.383}], 'summary': 'Learning about relational operators for decision making in programming.', 'duration': 31.876, 'max_score': 2272.858, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2272858.jpg'}, {'end': 2374.048, 'src': 'embed', 'start': 2349.081, 'weight': 1, 'content': [{'end': 2359.166, 'text': "we're going to come in here and we're going to create a function and it's going to be called can vote and I'm going to be passed in an age and then we will return certain things,", 'start': 2349.081, 'duration': 10.085}, {'end': 2361.387, 'text': 'depending upon if the person can vote or not.', 'start': 2359.166, 'duration': 2.221}, {'end': 2365.548, 'text': "So I'm going to use an if statement here and I'm going to follow that up.", 'start': 2361.707, 'duration': 3.841}, {'end': 2374.048, 'text': 'I want to check if greater than or equal to and then what this translates into is age greater than or equal to 18.', 'start': 2365.648, 'duration': 8.4}], 'summary': "Create a 'can vote' function based on age, returning eligibility status.", 'duration': 24.967, 'max_score': 2349.081, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2349081.jpg'}, {'end': 2528.579, 'src': 'embed', 'start': 2499.787, 'weight': 2, 'content': [{'end': 2501.388, 'text': "So let's create another function.", 'start': 2499.787, 'duration': 1.601}, {'end': 2504.989, 'text': "So I'm going to say that whatGrade is what this is going to be,", 'start': 2501.408, 'duration': 3.581}, {'end': 2512.851, 'text': "and it's going to receive an age and it is going to do different things depending upon the value of that.", 'start': 2504.989, 'duration': 7.862}, {'end': 2514.271, 'text': "You'll use condition a lot.", 'start': 2513.071, 'duration': 1.2}, {'end': 2514.871, 'text': 'All right.', 'start': 2514.531, 'duration': 0.34}, {'end': 2522.515, 'text': "So we're going to say if the age that was passed in there is greater than five or less than five.", 'start': 2514.911, 'duration': 7.604}, {'end': 2528.579, 'text': "I mean in that situation we are going to return preschool and we'll use a print line in that situation.", 'start': 2522.515, 'duration': 6.064}], 'summary': "Creating a function to return 'preschool' based on age using conditions.", 'duration': 28.792, 'max_score': 2499.787, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2499787.jpg'}, {'end': 2675.353, 'src': 'embed', 'start': 2646.989, 'weight': 3, 'content': [{'end': 2651.771, 'text': "You can see here whenever this is true it's going to execute multiple different statements.", 'start': 2646.989, 'duration': 4.782}, {'end': 2656.072, 'text': 'And then here we passed in the value of 19 and it says go to college.', 'start': 2652.091, 'duration': 3.981}, {'end': 2661.306, 'text': 'All right, so there is a rundown of numerous different things you can do conditionally.', 'start': 2656.403, 'duration': 4.903}, {'end': 2663.527, 'text': 'And now what I want to talk about is looping.', 'start': 2661.506, 'duration': 2.021}, {'end': 2667.609, 'text': "All right, the very first looping option I'm going to cover here are while loops.", 'start': 2663.807, 'duration': 3.802}, {'end': 2669.91, 'text': "And it's going to loop while condition is true.", 'start': 2667.869, 'duration': 2.041}, {'end': 2671.731, 'text': "Let's go and create a function once again.", 'start': 2670.09, 'duration': 1.641}, {'end': 2675.353, 'text': "And I'm going to call this 1, 2, x.", 'start': 2671.751, 'duration': 3.602}], 'summary': 'Transcript covers conditional statements and while loops in programming.', 'duration': 28.364, 'max_score': 2646.989, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2646989.jpg'}], 'start': 2272.858, 'title': 'Decision making and looping in closure', 'summary': "Covers decision-making using relational and logical operators, including 'if then else' statements, and handling multiple conditions, along with detailed explanations of while loops, do times loops, and loop constructs, with examples and outputs.", 'chapters': [{'end': 2646.809, 'start': 2272.858, 'title': 'Decision making and logical operators', 'summary': "Covers decision-making using relational and logical operators, demonstrating examples such as checking for equality, using 'if then else' statements, and handling multiple conditions, with a demonstration of the output.", 'duration': 373.951, 'highlights': ['The chapter covers decision-making using relational and logical operators It explains the usage of relational operators for equality and not equal, as well as less than, greater than, greater than or equal to, and less than or equal to. It also discusses logical operators such as and, or, and not.', "Demonstration of 'if then else' statements It provides an example of using 'if then else' statements to check if a person can vote based on their age, demonstrating the execution of different outcomes based on the condition being true or false.", "Handling multiple conditions It demonstrates handling multiple conditions using 'if else if else' statements to determine different outcomes based on different age ranges, including executing specific actions based on the conditions met."]}, {'end': 2954.534, 'start': 2646.989, 'title': 'Conditional statements and looping in closure', 'summary': 'Covers conditional statements including executing multiple statements based on a condition, followed by detailed explanations of while loops, do times loops, and loop constructs, with examples of code and outputs.', 'duration': 307.545, 'highlights': ['The chapter covers conditional statements including executing multiple statements based on a condition. This sets the stage for the subsequent explanation of conditional statements and their execution.', 'Detailed explanations of while loops, do times loops, and loop constructs are provided. These looping constructs are explained in detail, providing various options for iterating through code.', 'Examples of code and outputs are demonstrated for different looping constructs. The practical examples demonstrate the application and output of different looping constructs, enhancing understanding.']}], 'duration': 681.676, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2272858.jpg', 'highlights': ["The chapter covers decision-making using relational and logical operators, including 'if then else' statements, and handling multiple conditions.", "Demonstration of 'if then else' statements to check if a person can vote based on their age, executing different outcomes based on the condition being true or false.", "Handling multiple conditions using 'if else if else' statements to determine different outcomes based on different age ranges, including executing specific actions based on the conditions met.", 'Detailed explanations of while loops, do times loops, and loop constructs are provided, offering various options for iterating through code.', 'Examples of code and outputs are demonstrated for different looping constructs, enhancing understanding of their application and output.']}, {'end': 3507.957, 'segs': [{'end': 3014.422, 'src': 'embed', 'start': 2980.384, 'weight': 0, 'content': [{'end': 2984.866, 'text': "And then I'm going to define a function that, I'm going to define a couple functions that read and write files.", 'start': 2980.384, 'duration': 4.482}, {'end': 2986.607, 'text': "So let's find a function.", 'start': 2985.186, 'duration': 1.421}, {'end': 2988.948, 'text': "And I'm going to call this WriteToFile.", 'start': 2986.627, 'duration': 2.321}, {'end': 2992.91, 'text': "And there's very creative words used inside of Clojure.", 'start': 2989.008, 'duration': 3.902}, {'end': 2993.591, 'text': "It's kind of fun.", 'start': 2992.971, 'duration': 0.62}, {'end': 2994.111, 'text': 'All right.', 'start': 2993.611, 'duration': 0.5}, {'end': 3000.275, 'text': "So what I'm going to receive here is the file name and the text that I want to write to the file.", 'start': 2994.131, 'duration': 6.144}, {'end': 3004.137, 'text': "Then what I'm going to do is I'm going to use a function called width.", 'start': 3000.515, 'duration': 3.622}, {'end': 3014.422, 'text': 'and open and with open is going to open and close the file and then write the string to the file that i provide and to write to it,', 'start': 3004.657, 'duration': 9.765}], 'summary': 'Defining functions to read and write files in clojure.', 'duration': 34.038, 'max_score': 2980.384, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2980384.jpg'}, {'end': 3366.342, 'src': 'embed', 'start': 3319.254, 'weight': 1, 'content': [{'end': 3326.596, 'text': 'Yeah, that print line there and also the print line from actually writing it to the file, which is this line right here.', 'start': 3319.254, 'duration': 7.342}, {'end': 3333.879, 'text': 'And then I read both of them, the whole entire file, and then I said that I want just one of the lines from the file.', 'start': 3326.816, 'duration': 7.063}, {'end': 3335.28, 'text': 'Alright, so there we go.', 'start': 3333.999, 'duration': 1.281}, {'end': 3338.942, 'text': 'A whole bunch of different ways to interact with files using Clojure.', 'start': 3335.3, 'duration': 3.642}, {'end': 3341.124, 'text': "And now I'd like to talk about destructuring.", 'start': 3339.243, 'duration': 1.881}, {'end': 3347.568, 'text': 'Alright, so destructuring means basically the binding of values in a data structure to symbols.', 'start': 3341.344, 'duration': 6.224}, {'end': 3351.611, 'text': "So I'm going to come in here and I'm just going to call this destruct.", 'start': 3348.069, 'duration': 3.542}, {'end': 3355.314, 'text': "And it's not going to receive anything, just to keep this very simple.", 'start': 3352.131, 'duration': 3.183}, {'end': 3361.598, 'text': "Then I'm going to define vector values and I'll put 1 and 2 and 3 and 4 inside of here.", 'start': 3355.774, 'duration': 5.824}, {'end': 3366.342, 'text': 'And now what I want to do is assign values to symbols.', 'start': 3363.499, 'duration': 2.843}], 'summary': 'The transcript covers interactions with files using clojure and introduces destructuring.', 'duration': 47.088, 'max_score': 3319.254, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3319254.jpg'}, {'end': 3437.365, 'src': 'embed', 'start': 3408.85, 'weight': 6, 'content': [{'end': 3410.51, 'text': "Now let's talk about struct maps.", 'start': 3408.85, 'duration': 1.66}, {'end': 3415.213, 'text': 'Now struct maps are going to be used to define more complex custom types.', 'start': 3410.931, 'duration': 4.282}, {'end': 3417.594, 'text': 'So what I want to do is create another function.', 'start': 3415.473, 'duration': 2.121}, {'end': 3423.477, 'text': "I'm going to call this struct map example, and it's not going to receive anything.", 'start': 3417.614, 'duration': 5.863}, {'end': 3431.921, 'text': "And to define a struct, you're going to go define and struct, and I'm going to call this customer.", 'start': 3423.997, 'duration': 7.924}, {'end': 3437.365, 'text': "then you're going to define all of the things that your customers are going to have.", 'start': 3432.441, 'duration': 4.924}], 'summary': 'Struct maps define complex custom types, like customer data.', 'duration': 28.515, 'max_score': 3408.85, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3408850.jpg'}], 'start': 2954.834, 'title': 'Fileio and data structures in clojure', 'summary': 'Covers fileio in clojure, including writing to and reading from files, using functions like writetofile and readfromfile, and exception handling. it also demonstrates working with files in clojure, including writing, reading, and appending to a file, different ways of interacting with files, destructuring, and struct maps.', 'chapters': [{'end': 3098.495, 'start': 2954.834, 'title': 'Fileio in clojure', 'summary': 'Covers fileio in clojure, including writing to and reading from files, using functions like writetofile and readfromfile, and exception handling for potential errors in file reading.', 'duration': 143.661, 'highlights': ['Functions for writing to and reading from files, such as WriteToFile and readFromFile, are discussed, providing a practical approach to FileIO in Clojure.', 'The use of exception handling to address potential errors when reading from files is explained, demonstrating a comprehensive approach to file operations in Clojure.', 'The with-open function is highlighted as a useful tool for opening and closing files, ensuring efficient file handling in Clojure.', 'The print line and slurp commands are introduced as essential tools for reading from files in Clojure, contributing to a thorough understanding of file manipulation techniques.']}, {'end': 3507.957, 'start': 3098.495, 'title': 'Working with clojure and data structures', 'summary': 'Demonstrates working with files in clojure including writing, reading, and appending to a file as well as different ways of interacting with files. it also covers destructuring and struct maps.', 'duration': 409.462, 'highlights': ['Demonstrating writing, reading, and appending to a file in Clojure The chapter covers how to write, read, and append to a file in Clojure, including examples of writing text to a file, reading one line at a time, and appending text to a file.', "Discussing destructuring in Clojure The chapter explains destructuring in Clojure, which involves binding values in a data structure to symbols using 'let' and storing any remaining values using the 'rest' symbol.", 'Exploring struct maps in Clojure The chapter introduces struct maps in Clojure, used to define more complex custom types, and provides examples of defining a struct, creating struct objects, and accessing individual fields.']}], 'duration': 553.123, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE2954834.jpg', 'highlights': ['Functions for writing to and reading from files, such as WriteToFile and readFromFile, are discussed, providing a practical approach to FileIO in Clojure.', 'The use of exception handling to address potential errors when reading from files is explained, demonstrating a comprehensive approach to file operations in Clojure.', 'The with-open function is highlighted as a useful tool for opening and closing files, ensuring efficient file handling in Clojure.', 'The print line and slurp commands are introduced as essential tools for reading from files in Clojure, contributing to a thorough understanding of file manipulation techniques.', 'Demonstrating writing, reading, and appending to a file in Clojure The chapter covers how to write, read, and append to a file in Clojure, including examples of writing text to a file, reading one line at a time, and appending text to a file.', "Discussing destructuring in Clojure The chapter explains destructuring in Clojure, which involves binding values in a data structure to symbols using 'let' and storing any remaining values using the 'rest' symbol.", 'Exploring struct maps in Clojure The chapter introduces struct maps in Clojure, used to define more complex custom types, and provides examples of defining a struct, creating struct objects, and accessing individual fields.']}, {'end': 3857.826, 'segs': [{'end': 3536.632, 'src': 'embed', 'start': 3508.237, 'weight': 1, 'content': [{'end': 3512.28, 'text': 'And then we can just come down here and struct map.', 'start': 3508.237, 'duration': 4.043}, {'end': 3518.409, 'text': "map example and if I didn't get anything wrong, that should work perfectly and look at that.", 'start': 3512.66, 'duration': 5.749}, {'end': 3521.333, 'text': 'I did it right and there you can see that those worked alright.', 'start': 3518.409, 'duration': 2.924}, {'end': 3525.38, 'text': 'so another very quick example of how to use struct maps.', 'start': 3521.333, 'duration': 4.047}, {'end': 3529.646, 'text': "And now I'd like to talk about the advanced functions available with Clojure.", 'start': 3525.882, 'duration': 3.764}, {'end': 3536.632, 'text': "Alright, so we're going to be able to use anonymous functions inside of Clojure, and those are just going to be functions that don't have a name.", 'start': 3529.666, 'duration': 6.966}], 'summary': 'Introduction to struct maps and advanced functions in clojure.', 'duration': 28.395, 'max_score': 3508.237, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3508237.jpg'}, {'end': 3680.277, 'src': 'embed', 'start': 3649.465, 'weight': 0, 'content': [{'end': 3655.614, 'text': 'There are compact as well as regular old anonymous functions inside of Clojure.', 'start': 3649.465, 'duration': 6.149}, {'end': 3659.92, 'text': "Now let's jump back over here and I'm going to show you an example of a Clojure.", 'start': 3655.634, 'duration': 4.286}, {'end': 3664.203, 'text': 'And basically closures are going to be used to return custom functions.', 'start': 3660.239, 'duration': 3.964}, {'end': 3671.99, 'text': "So I'm going to come in and I'm going to define a custom multiplier is what I'm going to call this.", 'start': 3664.463, 'duration': 7.527}, {'end': 3680.277, 'text': "Or you know what, I'm going to run this inside of our REPL again just so you can see exactly, see that you can do this inside of here.", 'start': 3672.41, 'duration': 7.867}], 'summary': 'Clojure has compact and regular anonymous functions, used to return custom functions.', 'duration': 30.812, 'max_score': 3649.465, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3649465.jpg'}, {'end': 3767.271, 'src': 'embed', 'start': 3740.809, 'weight': 3, 'content': [{'end': 3745.733, 'text': "Let's say one way we can filter lists, well we have a couple of different functions.", 'start': 3740.809, 'duration': 4.924}, {'end': 3749.196, 'text': 'We have take, drop, take while, drop while, and filter.', 'start': 3745.753, 'duration': 3.443}, {'end': 3750.857, 'text': "I'm going to demonstrate every single one of them.", 'start': 3749.276, 'duration': 1.581}, {'end': 3753.539, 'text': "So, I don't even need print line in this situation.", 'start': 3751.037, 'duration': 2.502}, {'end': 3756.121, 'text': 'I can say take and two.', 'start': 3754.079, 'duration': 2.042}, {'end': 3763.728, 'text': 'And what this is going to do is take two of those values and leave the rest of them there.', 'start': 3756.441, 'duration': 7.287}, {'end': 3765.71, 'text': 'Whoops, forgot to put that in there.', 'start': 3763.988, 'duration': 1.722}, {'end': 3767.271, 'text': "Let's go get rid of that, all that mess.", 'start': 3765.79, 'duration': 1.481}], 'summary': 'Demonstrating list filtering functions including take, drop, take while, drop while, and filter.', 'duration': 26.462, 'max_score': 3740.809, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3740809.jpg'}, {'end': 3804.112, 'src': 'embed', 'start': 3779.56, 'weight': 5, 'content': [{'end': 3786.765, 'text': "You're also going to have drop and let's say that we want to drop everything after our first.", 'start': 3779.56, 'duration': 7.205}, {'end': 3790.187, 'text': "So I'm going to say drop one and then one, two and three.", 'start': 3787.085, 'duration': 3.102}, {'end': 3798.17, 'text': 'And you can see that it eliminated the first element and just gave me back the second and third.', 'start': 3791.548, 'duration': 6.622}, {'end': 3804.112, 'text': "We're also going to be able to take what matches a condition using something called take while.", 'start': 3798.41, 'duration': 5.702}], 'summary': 'Demonstrating data manipulation with drop and take while functions.', 'duration': 24.552, 'max_score': 3779.56, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3779560.jpg'}, {'end': 3857.826, 'src': 'embed', 'start': 3829.453, 'weight': 8, 'content': [{'end': 3832.155, 'text': 'And you can see it gave me the 0 and the 1.', 'start': 3829.453, 'duration': 2.702}, {'end': 3835.097, 'text': 'And we could also return what matches with filter.', 'start': 3832.155, 'duration': 2.942}, {'end': 3836.818, 'text': 'So we can say filter.', 'start': 3835.277, 'duration': 1.541}, {'end': 3840.841, 'text': "And I'll use the compact anonymous function here.", 'start': 3836.838, 'duration': 4.003}, {'end': 3842.342, 'text': "So I'm going to go greater than.", 'start': 3840.861, 'duration': 1.481}, {'end': 3846.785, 'text': "And I'm going to go percent 2.", 'start': 3843.262, 'duration': 3.523}, {'end': 3851.108, 'text': 'So this is going to say I want everything that is greater than 2 returned to me.', 'start': 3846.785, 'duration': 4.323}, {'end': 3854.964, 'text': 'And I can say 1 and 2 and 3 and 4.', 'start': 3851.621, 'duration': 3.343}, {'end': 3855.685, 'text': 'And there we go.', 'start': 3854.964, 'duration': 0.721}, {'end': 3857.826, 'text': 'And it returned 3 and 4.', 'start': 3855.865, 'duration': 1.961}], 'summary': 'Using filter and anonymous function, returned numbers greater than 2, resulting in 3 and 4.', 'duration': 28.373, 'max_score': 3829.453, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3829453.jpg'}], 'start': 3508.237, 'title': 'Clojure functions and list filtering functions', 'summary': 'Discusses the usage of anonymous and compact anonymous functions as well as struct maps in clojure, along with list filtering functions such as take, drop, take while, drop while, and filter, showcasing their functionality and examples.', 'chapters': [{'end': 3723.889, 'start': 3508.237, 'title': 'Clojure functions and struct maps', 'summary': 'Discusses the usage of anonymous and compact anonymous functions as well as struct maps in clojure, demonstrating examples and explaining their functionality.', 'duration': 215.652, 'highlights': ['The examples of using anonymous and compact anonymous functions in Clojure are demonstrated, with explanations and code walkthroughs.', 'The usage of struct maps in Clojure is illustrated through examples and its functionality is explained.', 'The process of creating custom functions using closures in Clojure is demonstrated, along with examples and code explanations.']}, {'end': 3857.826, 'start': 3723.889, 'title': 'List filtering functions', 'summary': 'Demonstrates the use of list filtering functions including take, drop, take while, drop while, and filter, showcasing their functionality to extract, eliminate, and match elements based on specific conditions in a list.', 'duration': 133.937, 'highlights': ['The chapter illustrates the functionality of list filtering functions including take, drop, take while, drop while, and filter, demonstrating their ability to extract, eliminate, and match elements based on specified conditions in a list.', 'The demonstration showcases using take to extract two values from a list, resulting in the retrieval of the first two values from the list.', 'Additionally, the chapter exhibits the use of drop to eliminate the first element from a list and retrieve the remaining elements, displaying its functionality in practice.', 'Furthermore, the chapter presents the functionality of take while, illustrating its capability to retrieve elements from a list based on specific conditions, such as extracting only negative values from the list.', 'Moreover, the chapter demonstrates the use of drop while to eliminate elements from a list based on specified conditions, showcasing its ability to drop elements that match a given condition.', 'Lastly, the chapter showcases the usage of filter to return elements from a list that match a defined condition, exemplifying its functionality by returning elements greater than 2 from a given list.']}], 'duration': 349.589, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3508237.jpg', 'highlights': ['The examples of using anonymous and compact anonymous functions in Clojure are demonstrated, with explanations and code walkthroughs.', 'The usage of struct maps in Clojure is illustrated through examples and its functionality is explained.', 'The process of creating custom functions using closures in Clojure is demonstrated, along with examples and code explanations.', 'The chapter illustrates the functionality of list filtering functions including take, drop, take while, drop while, and filter, demonstrating their ability to extract, eliminate, and match elements based on specified conditions in a list.', 'The demonstration showcases using take to extract two values from a list, resulting in the retrieval of the first two values from the list.', 'Additionally, the chapter exhibits the use of drop to eliminate the first element from a list and retrieve the remaining elements, displaying its functionality in practice.', 'Furthermore, the chapter presents the functionality of take while, illustrating its capability to retrieve elements from a list based on specific conditions, such as extracting only negative values from the list.', 'Moreover, the chapter demonstrates the use of drop while to eliminate elements from a list based on specified conditions, showcasing its ability to drop elements that match a given condition.', 'Lastly, the chapter showcases the usage of filter to return elements from a list that match a defined condition, exemplifying its functionality by returning elements greater than 2 from a given list.']}, {'end': 4282.348, 'segs': [{'end': 3931.954, 'src': 'embed', 'start': 3857.826, 'weight': 0, 'content': [{'end': 3859.088, 'text': "And that's just about it.", 'start': 3857.826, 'duration': 1.262}, {'end': 3865.033, 'text': "So to finish off the whole entire tutorial, I'd like to cover my last topic, which is going to be macros.", 'start': 3859.348, 'duration': 5.685}, {'end': 3874.451, 'text': 'Now basically a macro is going to generate code inline whenever you need to define when or if arguments should be evaluated.', 'start': 3865.526, 'duration': 8.925}, {'end': 3877.953, 'text': "So it's a code generating tool that is extremely powerful.", 'start': 3874.531, 'duration': 3.422}, {'end': 3880.114, 'text': "So let's, I'm going to give you a bunch of examples here.", 'start': 3878.253, 'duration': 1.861}, {'end': 3887.579, 'text': "So let's say that we wanted to have a macro that will print different discounts based on if the person is of the age of 65 or not.", 'start': 3880.474, 'duration': 7.105}, {'end': 3894.224, 'text': "How you define a macro is you go Define Macro, and we'll call this Discount.", 'start': 3888.499, 'duration': 5.725}, {'end': 3899.948, 'text': 'And here I am going to put the conditions going to be passed in,', 'start': 3895.044, 'duration': 4.904}, {'end': 3907.695, 'text': "and then we're going to have what happens with the first discount or the second discount, or lack thereof in this situation.", 'start': 3899.948, 'duration': 7.747}, {'end': 3916.399, 'text': "What we're then going to do to generate our code, but at the same time designate when we should refer to,", 'start': 3907.947, 'duration': 8.452}, {'end': 3920.805, 'text': "while at the same time deciding what we want to evaluate and what we don't want to evaluate?", 'start': 3916.399, 'duration': 4.406}, {'end': 3923.008, 'text': "we're going to use something called syntax quoting.", 'start': 3920.805, 'duration': 2.203}, {'end': 3931.954, 'text': "So here we are going to generate a list of commands and I'm then going to actually put inside here what commands we're going to use.", 'start': 3923.288, 'duration': 8.666}], 'summary': 'The tutorial covers the topic of macros, a powerful code generating tool, with examples of defining and using macros.', 'duration': 74.128, 'max_score': 3857.826, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3857826.jpg'}, {'end': 4053.997, 'src': 'embed', 'start': 4023.015, 'weight': 2, 'content': [{'end': 4026.996, 'text': "What I'm going to do is I'm going to show you a way to be able to add in your normal way.", 'start': 4023.015, 'duration': 3.981}, {'end': 4029.256, 'text': "So I'm going to define a macro for that.", 'start': 4027.196, 'duration': 2.06}, {'end': 4031.337, 'text': "So I'm going to say define macro.", 'start': 4029.356, 'duration': 1.981}, {'end': 4035.018, 'text': "And what I'm going to call this is regular math.", 'start': 4031.577, 'duration': 3.441}, {'end': 4039.719, 'text': "So you're going to be able to pass this guy the regular way that you would do mathematics.", 'start': 4035.158, 'duration': 4.561}, {'end': 4043.66, 'text': "So here it's going to be calculation is what I'm going to refer to that as.", 'start': 4040.239, 'duration': 3.421}, {'end': 4046.24, 'text': "And here, once again, I'm going to generate a list.", 'start': 4043.88, 'duration': 2.36}, {'end': 4048.901, 'text': "And I'm going to create second.", 'start': 4046.88, 'duration': 2.021}, {'end': 4053.997, 'text': "So what's going to be passed inside of this is going to be 2 plus 5.", 'start': 4050.074, 'duration': 3.923}], 'summary': 'Demonstrating a macro for performing math operations in a normal way, using 2 plus 5 as an example input.', 'duration': 30.982, 'max_score': 4023.015, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE4023015.jpg'}, {'end': 4131.801, 'src': 'embed', 'start': 4089.582, 'weight': 4, 'content': [{'end': 4091.244, 'text': "And you're going to see that seven comes back.", 'start': 4089.582, 'duration': 1.662}, {'end': 4091.924, 'text': 'All right.', 'start': 4091.464, 'duration': 0.46}, {'end': 4093.866, 'text': "So there's another demonstration of a macro.", 'start': 4091.944, 'duration': 1.922}, {'end': 4094.626, 'text': "Let's do another one.", 'start': 4093.886, 'duration': 0.74}, {'end': 4099.13, 'text': "So let's say that we want to do or execute multiple different statements.", 'start': 4094.766, 'duration': 4.364}, {'end': 4100.171, 'text': 'We can do that with do.', 'start': 4099.189, 'duration': 0.982}, {'end': 4104.694, 'text': "So I'm going to say that I want to define another macro and recall this do more.", 'start': 4100.43, 'duration': 4.264}, {'end': 4114.145, 'text': "and it is going to receive a condition and then it's going to have a body of statements, a bunch of statements that we're going to want to execute.", 'start': 4105.234, 'duration': 8.911}, {'end': 4131.801, 'text': "Here I'm going to once again generate a list and I do not want it to evaluate the if and I'm going to put in condition and then I'm going to Construct all these and once again I don't want it to refer to the do and then I'm just going to throw body in just like that.", 'start': 4114.425, 'duration': 17.376}], 'summary': 'Demonstration of creating a macro to execute multiple statements in a body.', 'duration': 42.219, 'max_score': 4089.582, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE4089582.jpg'}], 'start': 3857.826, 'title': 'Macros in clojure', 'summary': 'Introduces macros in clojure, explaining their use as a code generating tool, with examples of creating macros and determining discounts based on age, and showcasing the effective use of macros in clojure.', 'chapters': [{'end': 4004.465, 'start': 3857.826, 'title': 'Introduction to macros in clojure', 'summary': 'Introduces the concept of macros in clojure, explaining their use as a code generating tool to define when or if arguments should be evaluated, with an example of creating a macro to print different discounts based on age, and demonstrating the use of syntax quoting to generate code inline. it also showcases an example of using the defined macro to determine discounts based on age, with the condition of being over 65 resulting in a 10% discount and otherwise paying full price.', 'duration': 146.639, 'highlights': ['Macros are introduced as a code generating tool to define when or if arguments should be evaluated. The chapter explains the concept of macros as a code generating tool to define when or if arguments should be evaluated, emphasizing its power in generating inline code.', 'Demonstration of creating a macro to print different discounts based on age. The tutorial provides an example of creating a macro to print different discounts based on whether the person is over the age of 65 or not.', 'Utilizing syntax quoting to generate code inline. The chapter illustrates the use of syntax quoting to generate code inline, emphasizing its role in designating when to refer to and evaluating conditions.', 'Example of using the defined macro to determine discounts based on age. An example is showcased where the defined macro is utilized to determine discounts based on age, with the condition of being over 65 resulting in a 10% discount and otherwise paying full price.']}, {'end': 4282.348, 'start': 4004.805, 'title': 'Macros in clojure', 'summary': "Demonstrates the use of macros in clojure, including defining a macro for regular math, executing multiple statements with 'do', and using syntax quoting and unquote. the examples show how to create and utilize macros effectively in clojure.", 'duration': 277.543, 'highlights': ['The chapter demonstrates the use of macros in Clojure, including defining a macro for regular math. It shows how to define a macro for regular math, allowing the user to pass the regular way of doing mathematics and demonstrating the effective use of macros in Clojure.', "Executing multiple statements with 'do' is showcased. It illustrates the creation of a macro 'do more' to execute multiple statements based on a condition, providing a practical example of using macros in Clojure.", 'The usage of syntax quoting and unquote is demonstrated with practical examples. It explains the concept of syntax quoting and unquote in Clojure macros, showcasing its application with examples and its significance in macro definition.']}], 'duration': 424.522, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ciGyHkDuPAE/pics/ciGyHkDuPAE3857826.jpg', 'highlights': ['Macros are introduced as a code generating tool to define when or if arguments should be evaluated.', 'Demonstration of creating a macro to print different discounts based on age.', 'The chapter demonstrates the use of macros in Clojure, including defining a macro for regular math.', 'Utilizing syntax quoting to generate code inline.', "Executing multiple statements with 'do' is showcased.", 'Example of using the defined macro to determine discounts based on age.']}], 'highlights': ['The tutorial covers the core syntax of the entire Clojure language.', 'Guidance on installing Emacs and setting up the Clojure system is offered.', "Creating a Clojure project using Emacs The chapter explains the process of creating a Clojure project using the 'lein new app' command in a regular terminal, applicable to Windows or Linux systems.", "Defining namespaces, variables, and data types The tutorial introduces the process of defining namespaces, immutable variables with 'def', and different data types such as long, double, and boolean in Clojure.", 'Covers various string manipulations such as checking for blank strings, substring presence, finding match index, splitting and joining strings, as well as working with lists, sets, vectors, and maps, demonstrating creation, manipulation, and retrieval operations.', 'The process of changing values using atoms and agents in Clojure is explained, with a demonstration of changing a value from 5 to 10 and then from 10 to 11 using atoms.', 'The chapter provides an overview of Clojure math functions covering a wide range of mathematical operations.', "The chapter covers decision-making using relational and logical operators, including 'if then else' statements, and handling multiple conditions.", 'Functions for writing to and reading from files, such as WriteToFile and readFromFile, are discussed, providing a practical approach to FileIO in Clojure.', 'The examples of using anonymous and compact anonymous functions in Clojure are demonstrated, with explanations and code walkthroughs.', 'Macros are introduced as a code generating tool to define when or if arguments should be evaluated.']}