[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:04.85,Default,,0000,0000,0000,,In this section, we're gonna add what are\Ncalled expressions to the code we have Dialogue: 0,0:00:04.85,0:00:09.59,Default,,0000,0000,0000,,available. And that's kinda the last piece\Nwe needed to start writing, you know, Dialogue: 0,0:00:09.59,0:00:14.09,Default,,0000,0000,0000,,kinda realistic image manipulation code.\NAnd in particular by the end of this Dialogue: 0,0:00:14.09,0:00:19.01,Default,,0000,0000,0000,,section we'll play with puzzles that are\Nbased on images so, that'll be kinda fun. Dialogue: 0,0:00:19.01,0:00:23.86,Default,,0000,0000,0000,,So we've written code like this a lot of\Ntimes. So, here it says print(42). We just Dialogue: 0,0:00:23.86,0:00:28.25,Default,,0000,0000,0000,,have a number 40 or 100 or 250, or\Nwhatever and it's just in the code. It Dialogue: 0,0:00:28.25,0:00:32.87,Default,,0000,0000,0000,,turns out you can instead write that this\Nway. So it says print(11+31). And the Dialogue: 0,0:00:32.87,0:00:37.41,Default,,0000,0000,0000,,11+31 here, that's called an\Nexpression. And basically, instead of a, a Dialogue: 0,0:00:37.41,0:00:42.87,Default,,0000,0000,0000,,fixed number that's known ahead of time,\Nwe can put a little, a little arithmetic Dialogue: 0,0:00:45.44,0:00:48.01,Default,,0000,0000,0000,,expression. So in this case, 11+31,\Nit's a little problem. The way this works Dialogue: 0,0:00:48.01,0:00:52.92,Default,,0000,0000,0000,,is that, when the computer runs, when it\Ngets to this line. The first thing it's Dialogue: 0,0:00:52.92,0:00:57.06,Default,,0000,0000,0000,,gonna do, is, it is said to evaluate the\Nexpression. So it just picks out the Dialogue: 0,0:00:57.06,0:01:01.36,Default,,0000,0000,0000,,expression, and says, alright. Well, I\Nneed to work out what number this is. In Dialogue: 0,0:01:01.36,0:01:05.17,Default,,0000,0000,0000,,this case, it just does the addition, so,\N11+31, it's 42. So once the Dialogue: 0,0:01:05.17,0:01:09.48,Default,,0000,0000,0000,,expression's been evaluated down to a\Nnumber of 42, then the code can continue, Dialogue: 0,0:01:09.48,0:01:13.84,Default,,0000,0000,0000,,and just use that number. So, in effect,\Nthis'll just print 42. And so anywhere in Dialogue: 0,0:01:13.84,0:01:18.19,Default,,0000,0000,0000,,the code where we would have had a number\Nlike 0 or 255 or 100 or something Dialogue: 0,0:01:18.36,0:01:23.04,Default,,0000,0000,0000,,instead we're gonna be able to put little\Narithmetic expressions to sort of embed a Dialogue: 0,0:01:23.04,0:01:27.61,Default,,0000,0000,0000,,little computation to compute what number\Nwe want to use in that. That's gonna Dialogue: 0,0:01:27.61,0:01:33.16,Default,,0000,0000,0000,,enable us to, to solve better problems. So\Nwe haven't talked about it up to now but Dialogue: 0,0:01:33.16,0:01:38.89,Default,,0000,0000,0000,,the pixel has these three extra functions.\NThere's pixel.getRed() and what getRed Dialogue: 0,0:01:38.89,0:01:43.81,Default,,0000,0000,0000,,does is it, it's kind of the reverse of\NsetRed. It retrieves the number out of Dialogue: 0,0:01:43.81,0:01:49.04,Default,,0000,0000,0000,,the pixel. So there is some red value; 0\Nor 100 or something. This retrieves it Dialogue: 0,0:01:49.04,0:01:54.15,Default,,0000,0000,0000,,out. And there's also getGreen and getBlue. And so these are going to be very Dialogue: 0,0:01:54.15,0:01:59.22,Default,,0000,0000,0000,,natural to use in expressions to mess\Nwith the RGB values in a pixel. So Dialogue: 0,0:01:59.22,0:02:04.36,Default,,0000,0000,0000,,suppose what I want to do is double the\Nred value of a pixel so if it's 50 I wanna Dialogue: 0,0:02:04.36,0:02:08.85,Default,,0000,0000,0000,,make it a 100 if it's a 100 I wanna make\Nit a 200 or whatever. So here's some code Dialogue: 0,0:02:08.85,0:02:13.39,Default,,0000,0000,0000,,that does that so I'm gonna walk through\Nthis and this idea of making a relative Dialogue: 0,0:02:13.39,0:02:18.10,Default,,0000,0000,0000,,change to a pixel whatever it was change\Nit to you know triple it or something like Dialogue: 0,0:02:18.10,0:02:22.48,Default,,0000,0000,0000,,that, that gonna be a much more realistic\Nway to deal with the RGB values Dialogue: 0,0:02:22.48,0:02:27.08,Default,,0000,0000,0000,,of pixels. So let's walks with what this code\Ndoes. So this quote is correct. It does Dialogue: 0,0:02:27.08,0:02:31.67,Default,,0000,0000,0000,,double the red value of a pixel. So what\Nthe first line does, is, it calls pixel.getRed(). Dialogue: 0,0:02:31.67,0:02:36.25,Default,,0000,0000,0000,,So that's gonna retrieve the\Nnumber out. And let's just say, in this Dialogue: 0,0:02:36.25,0:02:40.65,Default,,0000,0000,0000,,case, that the red value is 50. So,\Npixel.getRed(), is gonna retrieve the 50. Dialogue: 0,0:02:40.65,0:02:45.05,Default,,0000,0000,0000,,And then, here, we're using the equal\Nsign, and the way we have before, to just Dialogue: 0,0:02:45.05,0:02:49.45,Default,,0000,0000,0000,,store that number in a variable. I'm, I'm\Njust gonna call old, for the, the old Dialogue: 0,0:02:49.45,0:02:54.19,Default,,0000,0000,0000,,value. So basically, this just stores 50\Nin old. So then, the next line says, Dialogue: 0,0:02:54.19,0:02:58.48,Default,,0000,0000,0000,,pixel.setRed(old "times" 2). So here, I'm\Nusing the expression. And remember, the Dialogue: 0,0:02:58.48,0:03:02.64,Default,,0000,0000,0000,,way it works is, when it gets to this\Nline, the first thing it's gonna wanna do Dialogue: 0,0:03:02.64,0:03:06.84,Default,,0000,0000,0000,,is evaluate the expression. So it's gonna\Nlook at old times 2. Old, remember it's Dialogue: 0,0:03:06.84,0:03:10.79,Default,,0000,0000,0000,,just storing 50. So basically, this says\N50 times 2, it's gonna evaluate that, Dialogue: 0,0:03:10.79,0:03:14.94,Default,,0000,0000,0000,,come up with 100. So it evaluates the\Nexpression to get 100. And now that it has Dialogue: 0,0:03:14.94,0:03:18.94,Default,,0000,0000,0000,,that value, then it can go ahead and run\Nthe code. And so it says pixel.setRed, Dialogue: 0,0:03:18.94,0:03:23.100,Default,,0000,0000,0000,,essentially 100. So if you, you think\Nthrough the whole sequence, basically this Dialogue: 0,0:03:23.100,0:03:28.82,Default,,0000,0000,0000,,pulls the 50 out, multiplies by 2 to get\N100, and then stores that back. So in Dialogue: 0,0:03:28.82,0:03:35.15,Default,,0000,0000,0000,,effect, it multiplies by two. Now. In\Nreality this is the way we're gonna write Dialogue: 0,0:03:35.15,0:03:39.21,Default,,0000,0000,0000,,it. The whole thing can be condensed down\Nto just one line because, really, that, Dialogue: 0,0:03:39.21,0:03:42.91,Default,,0000,0000,0000,,that variable old there was, it wasn't\Nadding a lot. It was just kinda a Dialogue: 0,0:03:42.91,0:03:47.12,Default,,0000,0000,0000,,temporary holding spot. And so let's\Nimagine that same case of pixel where the Dialogue: 0,0:03:47.12,0:03:51.24,Default,,0000,0000,0000,,red value is 50, and I'm just gonna run\Nthis. I've just condensed it down to one Dialogue: 0,0:03:51.24,0:03:55.50,Default,,0000,0000,0000,,line. So, let's imagine this code running.\NSo, I have a pixel with actually here I Dialogue: 0,0:03:55.50,0:03:59.46,Default,,0000,0000,0000,,have it. Pixel with red of 50 and I'm\Ngonna run this line. So the first thing Dialogue: 0,0:03:59.46,0:04:03.83,Default,,0000,0000,0000,,it's gonna do is it's gonna notice that\Nthere's an expression here, pixel.getRed() Dialogue: 0,0:04:03.83,0:04:08.19,Default,,0000,0000,0000,,times 2. So, it's gonna evaluate\Nthat expression. So pixe.getRed() is Dialogue: 0,0:04:08.19,0:04:12.65,Default,,0000,0000,0000,,gonna go get what the red value is\Ncurrently. So let say 50. So it'll say, Dialogue: 0,0:04:12.65,0:04:17.41,Default,,0000,0000,0000,,it's the same math we had before so 50\Ntimes two. That's 100. And so then with Dialogue: 0,0:04:17.41,0:04:22.16,Default,,0000,0000,0000,,that value 100, essentially it's gonna\Ncall pixel.setRed of 100 to put that Dialogue: 0,0:04:22.16,0:04:27.15,Default,,0000,0000,0000,,back. So it works out as the same dynamic\Nwe just went through. So it gets out the Dialogue: 0,0:04:27.15,0:04:31.96,Default,,0000,0000,0000,,value, multiplies by two and puts it back.\NOr, in effect, served in English, it Dialogue: 0,0:04:31.96,0:04:36.89,Default,,0000,0000,0000,,doubles the red value. So I'll do a bunch\Nof examples that follow, sort of this Dialogue: 0,0:04:36.89,0:04:44.26,Default,,0000,0000,0000,,pattern. So what we're gonna see. As I'll\Nstart using this inside of loops as were Dialogue: 0,0:04:44.26,0:04:51.27,Default,,0000,0000,0000,,as previously we had to you know say zero\Nor 250 I we had some fixed number but now. Dialogue: 0,0:04:51.27,0:04:56.87,Default,,0000,0000,0000,,We're gonna write code and this is the\Nexample I just did. Code like this where Dialogue: 0,0:04:56.87,0:05:02.48,Default,,0000,0000,0000,,we're going to change the red value based\Non what the red value was before. And so Dialogue: 0,0:05:02.48,0:05:08.15,Default,,0000,0000,0000,,the dynamic is, we'll have, you know, very\Noften we'll say pixel.setRed and then Dialogue: 0,0:05:08.15,0:05:13.68,Default,,0000,0000,0000,,in the parenthesis we'll call pixel.getRed()\Nand then have some arithmetic. So Dialogue: 0,0:05:13.68,0:05:18.97,Default,,0000,0000,0000,,in this case, this line doubles the red\Nvalue or ultimately, this line. Calls Dialogue: 0,0:05:18.97,0:05:23.80,Default,,0000,0000,0000,,pixel.setRed of pixel.getRed()\Ntimes 0.5. So it's getting the old value Dialogue: 0,0:05:23.80,0:05:28.32,Default,,0000,0000,0000,,and multiplying it times 0.5, or\Nessentially dividing by two, so it's gonna Dialogue: 0,0:05:28.32,0:05:33.39,Default,,0000,0000,0000,,make it smaller and then put that back.\NSo, that's gonna be the well, we'll follow Dialogue: 0,0:05:33.39,0:05:38.34,Default,,0000,0000,0000,,that pattern, a lot of times. So let me\Nget to a real example, here. So suppose I, Dialogue: 0,0:05:38.34,0:05:42.100,Default,,0000,0000,0000,,I'm gonna take the flower's image. And\Nlet's say I wanna make it look kind of Dialogue: 0,0:05:42.100,0:05:47.74,Default,,0000,0000,0000,,more orange. So my strategy is gonna be,\Nwell, let's change the green value. Let's Dialogue: 0,0:05:47.74,0:05:51.76,Default,,0000,0000,0000,,just turn down the green. And so,\Nmathematically, I'm gonna say, let's Dialogue: 0,0:05:51.76,0:05:55.65,Default,,0000,0000,0000,,change the green to be 75 percent of\Nwhatever it was. Now, in this example, Dialogue: 0,0:05:55.83,0:06:00.57,Default,,0000,0000,0000,,I've actually started the page with a no\Ncode in it. So I'm just gonna actually Dialogue: 0,0:06:00.57,0:06:05.01,Default,,0000,0000,0000,,type this in. So I'll say pixel, so, if I\Nwanna change the green to be 75 percent of Dialogue: 0,0:06:05.01,0:06:09.57,Default,,0000,0000,0000,,what it was. And this is, you know, some\Nof the example I just showed. I'll say Dialogue: 0,0:06:09.57,0:06:14.19,Default,,0000,0000,0000,,pixel.setGreen. You can also write\Nthis outside in so, I wanna call setGreen Dialogue: 0,0:06:14.19,0:06:19.12,Default,,0000,0000,0000,,and I want to put some kind of\Nexpression here, right so I want it Dialogue: 0,0:06:19.12,0:06:23.55,Default,,0000,0000,0000,,to compute a number that I want to put\Nback for the green value. So the pattern Dialogue: 0,0:06:23.55,0:06:28.20,Default,,0000,0000,0000,,I'm gonna use here is I'll say pixel.getGreen(),\NI'm gonna get the old value and Dialogue: 0,0:06:28.20,0:06:32.69,Default,,0000,0000,0000,,then I can kinda, you know multiply times\Nwhatever. In this case I multiply times Dialogue: 0,0:06:32.69,0:06:37.62,Default,,0000,0000,0000,,0.75. So I'll change it to be sort of,\Nthree quarters of whatever it was. So lets Dialogue: 0,0:06:37.62,0:06:42.82,Default,,0000,0000,0000,,try that. Oh, okay. So that does\Nmake it, if you recall it was Dialogue: 0,0:06:43.01,0:06:49.06,Default,,0000,0000,0000,,sorta yellow. Actually if I put. 1.0 here.\NWe can make no change. Right, so that's Dialogue: 0,0:06:49.06,0:06:53.83,Default,,0000,0000,0000,,when it was nice and yellow. So that's your 0.75 back here. Dialogue: 0,0:06:53.83,0:06:57.87,Default,,0000,0000,0000,,Then we get kinda a little more orange. I\Nshould say, for these examples. I'm gonna, Dialogue: 0,0:06:57.87,0:07:01.95,Default,,0000,0000,0000,,I'm gonna just take the time to type the\Ncode in. And you can do that if you want Dialogue: 0,0:07:01.95,0:07:06.09,Default,,0000,0000,0000,,to go back on this yourself. There's a\Nlittle show solution button down here. So, Dialogue: 0,0:07:06.24,0:07:09.98,Default,,0000,0000,0000,,if you come to the review later. The\Nsolution code is available. But, I just Dialogue: 0,0:07:09.98,0:07:14.01,Default,,0000,0000,0000,,felt like practicing purposes. It's better\Nto start with a blank screen. And then Dialogue: 0,0:07:14.01,0:07:18.05,Default,,0000,0000,0000,,really go through the process of typing\Nthe code in. So, all these examples will Dialogue: 0,0:07:18.05,0:07:22.62,Default,,0000,0000,0000,,follow that pattern. Let's try something a\Nlittle bit more difficult. So this says Dialogue: 0,0:07:22.88,0:07:29.75,Default,,0000,0000,0000,,set red, green and blue each to be, 0.75\Nof their original values, and then we'll Dialogue: 0,0:07:30.01,0:07:37.17,Default,,0000,0000,0000,,try 0.5 and 0.25. So what I'm gonna do. A\Ngreat computer science tradition, instead Dialogue: 0,0:07:37.17,0:07:43.34,Default,,0000,0000,0000,,of typing the code in absolutely from\Nscratch, I'm gonna copy it, the one I made Dialogue: 0,0:07:43.34,0:07:49.66,Default,,0000,0000,0000,,before and I'll just paste it. I'll make\Nthree copies of it, and then we'll fix it Dialogue: 0,0:07:49.66,0:07:56.07,Default,,0000,0000,0000,,to do what I want here. Okay, so usually I\Nalways go in the order, red, green, blue. Dialogue: 0,0:07:56.07,0:08:02.27,Default,,0000,0000,0000,,So I'm gonna say setRed. To getRed() and,\Nwhat did it say to, 0.75. Alright, so Dialogue: 0,0:08:02.27,0:08:07.98,Default,,0000,0000,0000,,that's, that one's good. And then we'll\Nsay setGreen to getGreen() times 0.75. And Dialogue: 0,0:08:07.98,0:08:13.55,Default,,0000,0000,0000,,then we'll do blue last. So setBlue,\Npixel.getBlue(). So you can sort of see Dialogue: 0,0:08:13.55,0:08:18.90,Default,,0000,0000,0000,,the pattern here of the set and get being\Ncombined. That's fine. It's a very Dialogue: 0,0:08:18.90,0:08:24.25,Default,,0000,0000,0000,,workable pattern. So I'll run it that way.\NYeah, It's a little bit subtle but what Dialogue: 0,0:08:24.25,0:08:28.92,Default,,0000,0000,0000,,this has done, is taken the original image\Nand made it a little bit darker. Cuz if Dialogue: 0,0:08:28.92,0:08:33.47,Default,,0000,0000,0000,,you think about it, by multiplying 0.75\Nwe're sort of moving everything towards Dialogue: 0,0:08:33.47,0:08:37.96,Default,,0000,0000,0000,,zero, and obviously 0,0,0 is pure\Nblack, so we're kind of compressing down Dialogue: 0,0:08:37.96,0:08:42.60,Default,,0000,0000,0000,,that way. So let's try make it a little\Nextreme. So, I'll multiply times 0.5 and Dialogue: 0,0:08:42.60,0:08:48.10,Default,,0000,0000,0000,,I'll run that. Oh, it's a little darker.\NAnd if almost by 0.25 so just a quarter of Dialogue: 0,0:08:48.10,0:08:53.59,Default,,0000,0000,0000,,the original values. Oh, then yeah, then\Nit's getting quite dark. So, this shows Dialogue: 0,0:08:53.59,0:08:59.43,Default,,0000,0000,0000,,a good realistic sort of interesting use\Nof this kind of scaling idea of using Dialogue: 0,0:08:59.43,0:09:05.06,Default,,0000,0000,0000,,setRed combined with getRed() and multiplying\Ntimes some number to sort of play Dialogue: 0,0:09:05.06,0:09:10.13,Default,,0000,0000,0000,,with the values. Either scaling them up or\Nscaling them down. Alright. So there's a, Dialogue: 0,0:09:10.13,0:09:13.72,Default,,0000,0000,0000,,a third problem here I, I'm gonna sorta\Nskip over. This one's just for extra Dialogue: 0,0:09:13.72,0:09:17.55,Default,,0000,0000,0000,,practice, if you wanna come and try this\None and it has a, it has a solution code Dialogue: 0,0:09:17.55,0:09:21.96,Default,,0000,0000,0000,,as well. So what I really want to do. Is\Nwork one of these five, ten, twenty Dialogue: 0,0:09:21.96,0:09:27.56,Default,,0000,0000,0000,,puzzles. So the idea with the five, ten,\Ntwenty puzzles is that there were some Dialogue: 0,0:09:27.56,0:09:33.38,Default,,0000,0000,0000,,image of a flower, piece of fruit or\Nsomething and it's been modified and the Dialogue: 0,0:09:33.38,0:09:39.27,Default,,0000,0000,0000,,way it's been modified is that the red,\Ngreen and blue values have all been divided by Dialogue: 0,0:09:39.27,0:09:44.87,Default,,0000,0000,0000,,either five, ten or twenty. So the values\Nare way to small the images could be Dialogue: 0,0:09:44.87,0:09:50.02,Default,,0000,0000,0000,,really dark and the challenge. Is to\Nmultiply the red, green, and blue values Dialogue: 0,0:09:50.02,0:09:54.89,Default,,0000,0000,0000,,by either five, ten, or twenty.\NEssentially to kind of undo the darkening Dialogue: 0,0:09:54.89,0:10:01.22,Default,,0000,0000,0000,,to kinda get the image back. And so. Such\Nas this it just comes down to some Dialogue: 0,0:10:01.22,0:10:05.78,Default,,0000,0000,0000,,experimenting and playing around a little\Nbit to try and figure out how to get the Dialogue: 0,0:10:05.78,0:10:10.30,Default,,0000,0000,0000,,image back. So the number five is used\Nonce the number ten is used once the Dialogue: 0,0:10:10.30,0:10:14.59,Default,,0000,0000,0000,,number twenty is used once so basically\Nyou just have to figure out, which one Dialogue: 0,0:10:14.59,0:10:19.26,Default,,0000,0000,0000,,goes with which color. And I should say,\Nyou know there's only six possible ways to Dialogue: 0,0:10:19.26,0:10:23.72,Default,,0000,0000,0000,,have five, ten and twenty so there's\Nreally not that many to go through. The Dialogue: 0,0:10:23.72,0:10:28.51,Default,,0000,0000,0000,,way I think about it is you can imagine\Nwell maybe the five is first is on red and Dialogue: 0,0:10:28.51,0:10:33.18,Default,,0000,0000,0000,,so then there's either, five is first and\Nthen it's either five, ten, twenty. Or Dialogue: 0,0:10:33.18,0:10:37.37,Default,,0000,0000,0000,,five, twenty, ten. So if five is first\Nthere's only two possibilities and then Dialogue: 0,0:10:37.37,0:10:40.78,Default,,0000,0000,0000,,likewise if ten is first there's only two\Npossibilities and if twenty is first Dialogue: 0,0:10:40.78,0:10:44.01,Default,,0000,0000,0000,,there's is only two possibilities so\Nthat's a way you can kind of organize Dialogue: 0,0:10:44.01,0:10:48.78,Default,,0000,0000,0000,,while your searching through this, alright\Nso let me let me go back here. As I said Dialogue: 0,0:10:48.78,0:10:55.59,Default,,0000,0000,0000,,before and grab, a copy of my code so we\Ndon't start with nothing. Alright, so in Dialogue: 0,0:10:55.59,0:11:00.89,Default,,0000,0000,0000,,this case what we have is a, a banana.\NActually, here, I'll, I'll comment these Dialogue: 0,0:11:00.89,0:11:06.07,Default,,0000,0000,0000,,lines out for a second, so we can just see\Nwhat the image looks like with nothing. So Dialogue: 0,0:11:06.07,0:11:10.94,Default,,0000,0000,0000,,there is the puzzle image. And what it\Nshow-, I'll tell you. There is a yellow Dialogue: 0,0:11:10.94,0:11:15.93,Default,,0000,0000,0000,,banana, and it's on a background of dark\Nred bricks. And in between the red bricks, Dialogue: 0,0:11:15.93,0:11:20.74,Default,,0000,0000,0000,,there's little bits of green moss that you\Ncan see. So if you fix the image, we Dialogue: 0,0:11:20.74,0:11:26.29,Default,,0000,0000,0000,,should be able to see all of those things.\NSo to fix the image. What I wanna do here Dialogue: 0,0:11:26.29,0:11:31.16,Default,,0000,0000,0000,,is multiply. Lets, I'm just gonna... I'll\Njust start with five, ten, twenty like Dialogue: 0,0:11:31.16,0:11:36.29,Default,,0000,0000,0000,,these. So let's say, well let's guess that\Nthe red needs to be multiplied by five, Dialogue: 0,0:11:36.29,0:11:41.23,Default,,0000,0000,0000,,the green needs to be multiplied by ten\Nand the blue has to be multiplied by Dialogue: 0,0:11:41.23,0:11:45.50,Default,,0000,0000,0000,,twenty. Its just a guess. So, If I do\Nthat. Mm-hm, well, well that, that's Dialogue: 0,0:11:45.50,0:11:50.42,Default,,0000,0000,0000,,clearly wrong, right? The banana doesn't\Nlook quite right. And the bricks have this Dialogue: 0,0:11:50.42,0:11:55.34,Default,,0000,0000,0000,,sort of blue cast, so that's not good. So\NI'll, I'll stick with the assumption that Dialogue: 0,0:11:55.34,0:11:59.96,Default,,0000,0000,0000,,the five is first, though. And I'll try\Nthe other permutation. Alright, so, well Dialogue: 0,0:11:59.96,0:12:05.62,Default,,0000,0000,0000,,maybe it's five, twenty, ten. So I'll\Ntry it that way. Oh, and that's worse. Dialogue: 0,0:12:05.62,0:12:11.34,Default,,0000,0000,0000,,Alright. So, I don't think the\Nfive is first. When I tried the two ways Dialogue: 0,0:12:11.34,0:12:20.60,Default,,0000,0000,0000,,with five first. So let's try the ten\Nfirst, so I'll try ten. 520. Alright, so Dialogue: 0,0:12:20.60,0:12:26.01,Default,,0000,0000,0000,,I'm just scaling these up. Ew, hm. Well, I\Nmean I think we're getting there, right? I Dialogue: 0,0:12:26.01,0:12:31.49,Default,,0000,0000,0000,,mean the banana looks pretty good but the\Nbricks obviously are, that's not, you Dialogue: 0,0:12:31.49,0:12:36.43,Default,,0000,0000,0000,,know, that's purple, they're\Nsupposed to be red. So let me try, I'm Dialogue: 0,0:12:36.43,0:12:41.98,Default,,0000,0000,0000,,gonna try leaving the five in the middle\Nand just putting the twenty first. Twenty, Dialogue: 0,0:12:41.98,0:12:47.55,Default,,0000,0000,0000,,five, ten, let's try that. There we have\Nit. There's the banana, it looks nice and Dialogue: 0,0:12:47.55,0:12:53.16,Default,,0000,0000,0000,,yellow. You can see the bricks have this\Ndark red color. And then even little bits Dialogue: 0,0:12:53.16,0:12:58.49,Default,,0000,0000,0000,,of, green moss here. That's sort of\Nreassuring. So I'm gonna zoom in on this, Dialogue: 0,0:12:58.49,0:13:03.75,Default,,0000,0000,0000,,so I'll show you. [inaudible] some, some\Nof the qualities of it. So partly there's, Dialogue: 0,0:13:03.75,0:13:08.29,Default,,0000,0000,0000,,there's the brick. And the moss and the\Nbananas all look good. There's just a Dialogue: 0,0:13:08.29,0:13:12.54,Default,,0000,0000,0000,,minor thing but you'll see there's kind of\Na, see there's sort of this horizontal Dialogue: 0,0:13:12.54,0:13:17.45,Default,,0000,0000,0000,,banding. In the banana and that's okay\Nthat is that's the way the solution looks Dialogue: 0,0:13:17.45,0:13:22.70,Default,,0000,0000,0000,,when you do it quickly. That's happening\Nbecause when the red, green, and blue when Dialogue: 0,0:13:22.70,0:13:27.88,Default,,0000,0000,0000,,they were divided by this numbers by ten\Nor maybe twenty all of those values which Dialogue: 0,0:13:27.88,0:13:33.12,Default,,0000,0000,0000,,normally range to zero to fifty five they\Nare compressed down to ranging maybe just Dialogue: 0,0:13:33.12,0:13:37.74,Default,,0000,0000,0000,,zero to twelve or zero to twenty four. And\Nas a result... Because they were Dialogue: 0,0:13:37.74,0:13:41.85,Default,,0000,0000,0000,,compressed down to that range, there were\Njust a few shades of yellow available, Dialogue: 0,0:13:41.85,0:13:45.96,Default,,0000,0000,0000,,when it was compressed down like that. And\Neven when we expand it back up, we're Dialogue: 0,0:13:45.96,0:13:50.08,Default,,0000,0000,0000,,still stuck with just those few shades. So\Nthat's what we're seeing in these Dialogue: 0,0:13:50.08,0:13:53.83,Default,,0000,0000,0000,,horizontal band here, is, there, there\Nwere just a few different shades of Dialogue: 0,0:13:53.83,0:13:58.04,Default,,0000,0000,0000,,yellow. And so it's unable to capture.\NI'll zoom in a little bit. It's unable to Dialogue: 0,0:13:58.04,0:14:02.64,Default,,0000,0000,0000,,capture. The, the real gradations that you\Nwould want. And so that's just sort of a, Dialogue: 0,0:14:02.64,0:14:07.48,Default,,0000,0000,0000,,an artifact of the, the way this exercise\Nworks. Alright. So the, the exercises to Dialogue: 0,0:14:07.48,0:14:11.100,Default,,0000,0000,0000,,follow this section are actually just more\Nof these five, ten, twenty puzzles. So, Dialogue: 0,0:14:11.100,0:14:13.98,Default,,0000,0000,0000,,it's something you should check out.