Question: ```
const howLong = 5

```

```
let special = [
    "!",
    "@",
    "#",
    "$",
    "%",
    "+",
    "&",];

let finalPassword = []

for (let i = 0; i < howLong; i++) { 
    finalPassword += special[Math.floor(Math.random() * howLong)].push

}

```

console prints undefined 5x, my goal is to make it copy 5 random characters from the "special" array into a new var "finalPassword"

Answer: 
Depending on what your expected output requirements are you can either concatenate "special" characters on to a string:

```js
const howLong = 5;

let special=["!","@","#","$","%","+","&"];

let finalPassword = '';

for (let i = 0; i < howLong; i++) { 
  const rnd = Math.floor(Math.random() * howLong);
  finalPassword += special[rnd];
}

console.log(finalPassword);
```

...or you can push those "special" characters into an array (and then maybe `join` up that array of elements into a string).

```js
const howLong = 5;

let special=["!","@","#","$","%","+","&"];

let finalPassword = [];

for (let i = 0; i < howLong; i++) { 
  const rnd = Math.floor(Math.random() * howLong);
  finalPassword.push(special[rnd]);
}

console.log(finalPassword);
console.log(finalPassword.join(''));
```

But you can't do both operations at the same time.
In your example you simply have to remove `.push` it seems.

```js
let special = ["!", "@", "#", "$", "%", "+", "&"];

let finalPassword = [];

for (let i = 0; i < 5; i++) {
  finalPassword += special[Math.floor(Math.random() * 5)];
}

console.log({ finalPassword });
```