How to access array index via bracket notation because only dot notation makes sense apparently but the lesson says both are permitted!
OK, why the exclamation point? Calm down. 
They do two different things. Arrays are always accessed with bracket notation. Objects can usually be accessed with dot notation. (Sometimes we must use bracket notation for objects, but not in this case - use dot notation.)
const friends = {
Alice: {
age: 32,
location: 'Paris',
likes: [
'Star Wars',
'Thai Food',
'Jazz',
],
},
Bob: {
age: 35,
location: 'Chicago',
likes: [
'Travel',
'Breakfast Cereal',
'Star Trek',
],
},
}
console.log(friends)
// {
// "Alice": {
// "age": 32,
// "location": "Paris",
// "likes": [
// "Star Wars",
// "Thai Food",
// "Jazz"
// ]
// },
// "Bob": {
// "age": 35,
// "location": "Chicago",
// "likes": [
// "Travel",
// "Breakfast Cereal",
// "Star Trek"
// ]
// }
// }
So, friends is an object. If we want to look at the “Alice” property, we will use dot notation, because we are accessing an object property:
console.log(friends.Alice)
// {
// "age": 32,
// "location": "Paris",
// "likes": [
// "Star Wars",
// "Thai Food",
// "Jazz"
// ]
// }
So, that is an object, the record of Alice. If we want to see her “likes”, that is an array, but the array is stored on a property of the object. We are accessing the entire array as a property on that object, so again, dot notation:
console.log(friends.Alice.likes)
// [
// "Star Wars",
// "Thai Food",
// "Jazz"
// ]
Now, friends.Alice.likes is an array. If we want to get inside that array, we must use bracket notation. If we want to see an element of that array:
console.log(friends.Alice.likes[0])
// Star Wars
Yes, it can get a little confusing, when you start putting objects of objects of arrays of objects with arrays inside them… But it gets better with practice.