Hello in this video I'm going to talk about something called, how to clean
your glasses. Theres a horrible smudge on my glasses, this is what I look like
without glasses by the way. I'm going to talk about something called an associative
array. Forevermore associative arrays will be associated with me cleaning my glasses
what are you gonna do? What is an associative array. Ok lets talk about
first, and why do we need one? First of all, the context here is I want to do
a word counting application. Meaning, I want to have a list of every word thats
in a document and a number associated with that word, a list of pairs of things.
Word, number, word, number, key, value key, value.This is sort of where I'm going
But first before I even get there, lets talk about what is an array. Which if
you're watching this video hopefully you're familiar with, if not don't worry
life will be ok. I might refer you to one of my videos about arrays. But an array is
ultimately just a list of things, ordered list of stuff. Look at this marker its
excellent! So maybe I might have some numbers like 3, 4, 19, -7, 29. Now this
is an ordered list, meaning every single number has an index. And when you count
with arrays in programming, generally speaking you start counting with 0.
0,1,2,3,4. So here is my array, 3,4,19,-7 29, ordered in order 0,1,2,3,4.
So this is a regular array, a list ordered list. An Associate array also
by the way if you're hearing a strange buzzing in your ear its not just you its
construction thats happening right outside the window over there while I'm recording
this video. But this is life in new york city, people like to complain about
construction happening in their backyard but if you live here, you signed up for it.
Associate Array! Lets say I have these same numbers, I'm gonna draw them like
this because even though I'm kinda giving them spatial orientation it appears they
may have some sort of order, this new thing I'm going to talk about, Associate
array is not really ordered. So the way that i access, if this is called Array.
If this is a variable storing that, the way that I would access the number 19.
Would be array index 2. With an associative array, this is an associative
array, I'm associating numbers with numbers, but really what I'm talking
about with an Associative array is being able to associate a key that is not just
an index with a particular number. That key in many cases is a string. And all
the examples I'm going to show you use a string. Of course the key can be something
other than a string, a string of text. So the idea is here what if instead of
referring to each of these by their index I could name them. So this one is rainbow
And this one is unicorn. This one is purple, this one is heart, Oh I ran out
of my happy words. This one is happy. Happy little associative array. For all
you wanting me to make Bob Ross references So this is the idea, what if I could
instead of having an ordered list with indexes, what if I could name all these
elements. If this is my associative array, assoc, my associative array, I would say
Associative index unicorn. I could put the name in the square brackets to
indicate thats how I want to look up this particular value. So why is this
useful? I think I need to make a separate side video related to this one I'm doing
right now, to discuss when would you use and ordered list, and when would you use
an associative array. In this case, of word counting you can clearly see why
I might want to use an associative array. because i want to keep track of words
and the number of times they appear in a given document. That noise is really
driving me crazy. I have to zen out for a second. Lets just say what I wanted to do
was pair words with numbers. I could say something like unicorn colon 16 comma
rainbow colon 2 comma heart colon 10. You could see how this like a nice list
of key value pairs, this being the key to look up a particular value, 16.
Lets put some more syntax on this, Oh I'll just put a curly bracket here, and
I'll put a curly bracket here and I'll say var dictionary equals this. If you're
looking at this what you'll notice is thats the syntax of a Javascript object!
So a javascript object is exactly this. I think i have a video that talks about
what is a javascript literal object. I think what i say is its a collection of
name value pairs. So in fact we can simply use the fact that a javascript object
natively is a collection of name value pairs to act as a dictionary. Now there
are some tricks I'm going to employ to make it usable. How do i sort its order,
javascript objects don't actually have an order to them. How do i iterate over all
the possibilities? We're going to see that as I build out the coding challenge, doing
a word counting application. But lets just examine, theres one piece of this which
is kind of crucial that I want to examine. Let me go back over to the code for a
second. I'm going to go over to a browser instance, because I'm going to work just
in the developer console to show you what i mean. Lets say I want to create
this object called dictionary. The first thing I can do if I want to create an
empty object is I can say open curly bracket closed curly bracket. Let me
make that a little bit bigger for you, open curly bracket, closed curly bracket.
Now i have an object which is empty. What if i want to say the number of times
rainbow appeared in that dictionary is 12. Well you know I can say dictionary dot
rainbow equals 12. Now if i look at the dictionary you can see, let me just do
this again, you can see look, the object now has the word rainbow associated with
the number 12. Lets say Im trying to track, what i actually want to look for
is the number of times a writer uses a contraction, like can't or don't versus
the longer way of writing that out. Can not or do not. Dictionary dot can't equals
15 because the Author that I'm analyzing used the word can't 15 times.
Uncaught syntax error, invalid or unexpected token, so this seems to
have broken my idea. Because thats an invalid variable name. But I have
something that might want to keep track of its count. Right? I want to know
I also might want to know how many times did the area code 917 appear in a text
Thats not a valid variable name either I don't think,Right? So if I come back
over here and say dictionary dot 917 equals it appears 25 times. Thats also
invalid. One of the things thats really important here in how things work in
Javascript, is that you can access the properties of an object in two ways.
I can say dictionary dot heart equals 15 or I can say dictionary string heart
equals 15. These are equivalent. The heart property of dictionary has the value
15, or the hart property in quotes in square brackets of dictionary has the
value 15. the question becomes well this maybe looks more syntactically
concise, and it might be what you're familiar with. I make a particle system
particle dot x its 20, particle dot y, particle dot speed. But this is actually
something, this is the syntax we'll want to use for word counting applications
Why? because this will work with something like can't or 917. We can make any string
inside here and set it as a valid value of the dictionary. And in fact even more
important what you're going to see that I need to do in the word counting coding
challenge, is I'm gonna need to have a variable. I'm reading a text in, so I
don't actually have that string in my code its in a variable. So if I have a variable
name I can't say dictionary dot variable name I have to say dictionary bracket
the variable name if its a string in that variable. Let me make that more clear by
showing you this couple steps through again here in the console. So first, lets
confirm that it works, if I say dictionary 917, equals 15 that works, and I say
dictionary can't, now notice I switched to using double quotes, because theres a
single quote in can't and so it'll get confused it I use single quotes and a
single quote, but I can just use double quotes and it'll fix that problem.
I could do this, and now lets look at the dictionary and you can see, look what
its got, its got 917 and its got can't in it. So you can see here that its
able to keep those as names of the properties if I pass them in on a
string. Now let me talk about what I mean by a variable. Lets say var word equals,
did i do unicorn yet, I don't think so. Var word equals unicorn, well what
happens if I say dictionary dot word equals 99. Whats gonna be in there?
Is it gonna be 99 associated with the string unicorn or is it gonna be 99
associated with something called word. Lets see what happens, ok now if I look
at dictionary, unicorns not in there, it thinks word is the string. It doesn't know
that word is that variable, its like I can't even explain it because it doesn't
make sense in my head even though it seems like maybe that would work.
I have to use that other syntax, because what I want to do is say var word equals
heart then I can say dictionary bracket word, now its gonna evaluate the property
of that variable as heart and be able to set that number. I could say 100 and I
could look at my dictionary again and we could see there are all the words and
their associated counts. Heart is in there at 100, thats the thing I'm gonna need
to do because I'm reading in a text and pairing the values with it.
Ok so i think this defines basically the idea of what an associative array is,
and how you can use one in javascript. Now how you iterate over it, how you
might sort it, how you kind of mess with it, these are things that I will show you
in the next video which is gonna be a coding challenge of doing a word
concordance. Thanks for watching and see you soon.
Subtitles by the Amara.org community