WEBVTT

00:00:00.000 --> 00:00:01.800 align:middle line:90%


00:00:01.800 --> 00:00:03.330 align:middle line:90%
All right, good.

00:00:03.330 --> 00:00:04.710 align:middle line:90%
You guys know what wat means?

00:00:04.710 --> 00:00:07.902 align:middle line:90%


00:00:07.902 --> 00:00:09.830 align:middle line:90%
Wat.

00:00:09.830 --> 00:00:12.720 align:middle line:90%
Exactly, exactly.

00:00:12.720 --> 00:00:15.600 align:middle line:90%
Let's talk about Ruby.

00:00:15.600 --> 00:00:20.430 align:middle line:84%
In Ruby, if you reference an
undefined variable, of course,

00:00:20.430 --> 00:00:22.650 align:middle line:90%
it name errors, as you'd expect.

00:00:22.650 --> 00:00:27.360 align:middle line:84%
And if you try to assign B to A
with them undefined, of course,

00:00:27.360 --> 00:00:29.118 align:middle line:90%
it name errors, as you'd expect.

00:00:29.118 --> 00:00:30.660 align:middle line:84%
And what happens if
you try to assign

00:00:30.660 --> 00:00:32.670 align:middle line:90%
A to with A with A undefined?

00:00:32.670 --> 00:00:33.840 align:middle line:90%
Nil.

00:00:33.840 --> 00:00:35.160 align:middle line:90%
Correct.

00:00:35.160 --> 00:00:37.100 align:middle line:90%
Nil.

00:00:37.100 --> 00:00:38.414 align:middle line:90%
Wat.

00:00:38.414 --> 00:00:43.500 align:middle line:90%
[LAUGHTER]

00:00:43.500 --> 00:00:44.430 align:middle line:90%
Let's talk about Ruby.

00:00:44.430 --> 00:00:47.250 align:middle line:90%


00:00:47.250 --> 00:00:49.860 align:middle line:84%
Ruby, unlike some other
dynamic languages,

00:00:49.860 --> 00:00:52.860 align:middle line:84%
does not have bare words, so you
cannot just type words and have

00:00:52.860 --> 00:00:54.360 align:middle line:90%
strings come out--

00:00:54.360 --> 00:00:57.690 align:middle line:84%
unless you define a
particular method missing

00:00:57.690 --> 00:00:59.280 align:middle line:90%
that does the right thing.

00:00:59.280 --> 00:01:01.890 align:middle line:84%
And then if you type bare
words, suddenly, Ruby

00:01:01.890 --> 00:01:03.147 align:middle line:90%
supports bare words.

00:01:03.147 --> 00:01:04.980 align:middle line:84%
And in fact, it will
even support bare words

00:01:04.980 --> 00:01:07.600 align:middle line:90%
with bangs in them.

00:01:07.600 --> 00:01:09.300 align:middle line:84%
And this is not
deserving of wat.

00:01:09.300 --> 00:01:13.460 align:middle line:84%
This is actually a result
of how awesome Ruby is.

00:01:13.460 --> 00:01:16.570 align:middle line:84%
But if you ever actually
do this, then wat?

00:01:16.570 --> 00:01:21.780 align:middle line:90%


00:01:21.780 --> 00:01:23.910 align:middle line:90%
Let's talk about JavaScript.

00:01:23.910 --> 00:01:27.870 align:middle line:90%


00:01:27.870 --> 00:01:31.300 align:middle line:84%
Does anyone know, in JavaScript,
what array plus array

00:01:31.300 --> 00:01:32.910 align:middle line:84%
is-- well, let me
ask you this first.

00:01:32.910 --> 00:01:35.060 align:middle line:84%
What should array
plus an array be?

00:01:35.060 --> 00:01:36.060 align:middle line:90%
Empty array.

00:01:36.060 --> 00:01:36.630 align:middle line:90%
Empty array.

00:01:36.630 --> 00:01:38.610 align:middle line:90%
I would also accept type error.

00:01:38.610 --> 00:01:40.980 align:middle line:84%
That is not what
array plus array is.

00:01:40.980 --> 00:01:42.120 align:middle line:90%
Wrong.

00:01:42.120 --> 00:01:43.230 align:middle line:90%
Wrong.

00:01:43.230 --> 00:01:46.117 align:middle line:84%
Array plus array
is empty string.

00:01:46.117 --> 00:01:49.530 align:middle line:90%
[LAUGHTER]

00:01:49.530 --> 00:01:50.100 align:middle line:90%
Obviously.

00:01:50.100 --> 00:01:53.190 align:middle line:84%
I think that's
obvious to everyone.

00:01:53.190 --> 00:01:54.750 align:middle line:84%
Now, what would
array plus object be?

00:01:54.750 --> 00:01:56.250 align:middle line:84%
This should obviously
be type error,

00:01:56.250 --> 00:01:58.890 align:middle line:84%
because those are
completely disparate types.

00:01:58.890 --> 00:02:00.562 align:middle line:90%
Does anyone know what this is?

00:02:00.562 --> 00:02:01.980 align:middle line:90%
False.

00:02:01.980 --> 00:02:02.620 align:middle line:90%
No.

00:02:02.620 --> 00:02:03.180 align:middle line:90%
Close.

00:02:03.180 --> 00:02:04.102 align:middle line:90%
No, far away.

00:02:04.102 --> 00:02:04.602 align:middle line:90%
Number.

00:02:04.602 --> 00:02:05.102 align:middle line:90%
Object.

00:02:05.102 --> 00:02:06.840 align:middle line:90%
It's object.

00:02:06.840 --> 00:02:08.100 align:middle line:90%
Right, nicely done.

00:02:08.100 --> 00:02:10.365 align:middle line:84%
Now, of course,
because this is plus--

00:02:10.365 --> 00:02:13.360 align:middle line:84%
so you can flip the operands
and the same thing comes out.

00:02:13.360 --> 00:02:14.670 align:middle line:90%
So if we do--

00:02:14.670 --> 00:02:15.170 align:middle line:90%
Is that an array of an object?

00:02:15.170 --> 00:02:16.020 align:middle line:90%
What?

00:02:16.020 --> 00:02:17.730 align:middle line:90%
No, that's just an object.

00:02:17.730 --> 00:02:19.370 align:middle line:84%
If you do object plus
array, you should

00:02:19.370 --> 00:02:22.140 align:middle line:84%
get exactly the same thing--
which, as you can see, you do.

00:02:22.140 --> 00:02:26.750 align:middle line:90%


00:02:26.750 --> 00:02:30.893 align:middle line:84%
And finally, the only one of
these that's actually true is--

00:02:30.893 --> 00:02:32.810 align:middle line:84%
because you add arrays,
you get empty string--

00:02:32.810 --> 00:02:33.810 align:middle line:90%
that doesn't make sense.

00:02:33.810 --> 00:02:36.970 align:middle line:84%
But an object plus an object
is actually not a number,

00:02:36.970 --> 00:02:42.970 align:middle line:84%
technically, so this
one's actually right.

00:02:42.970 --> 00:02:44.860 align:middle line:90%
And exactly, right?

00:02:44.860 --> 00:02:47.330 align:middle line:84%
Like, what is even
going on in this lab?

00:02:47.330 --> 00:02:50.450 align:middle line:84%
I just-- I don't
even understand what

00:02:50.450 --> 00:02:52.317 align:middle line:84%
a person with a
brain in their head

00:02:52.317 --> 00:02:54.150 align:middle line:84%
would think that any
of this is a good idea.

00:02:54.150 --> 00:02:57.820 align:middle line:90%


00:02:57.820 --> 00:02:58.612 align:middle line:90%
OK, OK.

00:02:58.612 --> 00:03:00.320 align:middle line:84%
Enough making fun of
languages that suck.

00:03:00.320 --> 00:03:04.220 align:middle line:90%
Let's talk about JavaScript.

00:03:04.220 --> 00:03:08.295 align:middle line:84%
If I say array.new,
16, or just Array(16),

00:03:08.295 --> 00:03:10.295 align:middle line:84%
I get an array of 16
things, which it represents

00:03:10.295 --> 00:03:12.830 align:middle line:90%
as 16 commas, which is obvious.

00:03:12.830 --> 00:03:17.450 align:middle line:84%
And if I then join
those with a string,

00:03:17.450 --> 00:03:19.220 align:middle line:90%
then I get this string 16 times.

00:03:19.220 --> 00:03:21.740 align:middle line:84%
This is actually the only line
in this entire presentation

00:03:21.740 --> 00:03:23.810 align:middle line:90%
that's reasonable.

00:03:23.810 --> 00:03:26.000 align:middle line:84%
Now, if I take that string
and then add a 1 to it,

00:03:26.000 --> 00:03:29.440 align:middle line:90%
it casts the 1 to a string.

00:03:29.440 --> 00:03:32.450 align:middle line:84%
And then we get wat1 a
bunch of times-- fine.

00:03:32.450 --> 00:03:35.180 align:middle line:84%
Does anyone know what will
happen if I subtract 1

00:03:35.180 --> 00:03:38.150 align:middle line:90%
from the string?

00:03:38.150 --> 00:03:39.200 align:middle line:90%
I'm assuming no one does.

00:03:39.200 --> 00:03:40.650 align:middle line:90%
Let me-- I'll give you a hint.

00:03:40.650 --> 00:03:43.690 align:middle line:90%
Does this help?

00:03:43.690 --> 00:03:46.060 align:middle line:90%
Does anyone know?

00:03:46.060 --> 00:03:48.510 align:middle line:90%
Yes.

00:03:48.510 --> 00:03:52.430 align:middle line:90%
[LAUGHTER]

00:03:52.430 --> 00:03:55.360 align:middle line:90%


00:03:55.360 --> 00:03:55.860 align:middle line:90%
Watman.

00:03:55.860 --> 00:04:05.180 align:middle line:90%


00:04:05.180 --> 00:04:05.910 align:middle line:90%
That's all I got.

00:04:05.910 --> 00:04:07.870 align:middle line:90%
Thank you guys.

00:04:07.870 --> 00:04:17.000 align:middle line:90%
