Logical operators & nullish coalescing break strangely in template string expressions
<!--

BEFORE SUBMITTING AN ISSUE:

1.  Search for your issue on GitHub: https://github.com/prettier/prettier/issues
    A large number of opened issues are duplicates of existing issues.
    If someone has already opened an issue for what you are experiencing,
    you do not need to open a new issue — please add a 👍 reaction to the
    existing issue instead.

2.  We get a lot of requests for adding options, but Prettier is
    built on the principle of being opinionated about code formatting.
    This means we have a very high bar for adding new options.
    Find out more: https://prettier.io/docs/en/option-philosophy.html

Tip! Don't write this stuff manually.

1. Go to https://prettier.io/playground
2. Paste your code and set options
3. Press the "Report issue" button in the lower right

-->

Hi! :wave:

**Prettier 1.19.1**
[Playground link](https://prettier.io/playground/#N4Igxg9gdgLgprEAuEB6VACKBXANrgSwGcALDSAQ1ziLAKgHMAaDXCBgsKjCABzgBOFGBAFEWFKABMMAIwgRqknvyEixcuCQoA3OBhgl9RCgFs4AHSgADAIz2HDjACZXbtxgDM3nz4wAWQKCgjABWcIiIjAA2WLi4jAB2ZJSUjAASYFsMAH4clwBfawBuKztHRxd3dy9fXwDg4LDIyJj4+KTU1IysjAAyPsKSsorK6pq6+samltb2jq7uzOyAHxWh0ptRp3GPSb9pkNmo+YTFtOWMdecizat0A0EoCgEATwxebFIaAyMMAHcSIp9HAAB68AQ0IgEaAGCAYChYOD-Vj0SxbbbZXauWr7BqHZrHNqnTrnHrZfLZJAbKwgJggPgwGFQIjIUAvAQQf4ABReCFZKF0EAIUjpIFkQjAAGs4DAAMq8Ch0RjIGACbBwekkGCmXAAdRIBHgREVYDgcv5RoIOiNr2Q4CIrPp9CIghg3KEDFMFGQADMqK76QArIiggBCkpl8rMcAAMmi-QHNSAQ6C5fQGNQAIrYCDwRO4QMgRViQT22QUWRwXBiiH0GB6kWGZAADgADPSIRBXXqhLx7RCaII9GKAI65+AevgCkAUIgAWigcDgUhXYsh44IkI9FC9PqQ-sLyddpgIqvVx4z2YncALRZglcbUmbSGc9LVFAIhEYAGEIKZvXtKBoFvekvjgAAVSsBUPIsdA1ABJaQEHlMABAIXgYAAQWkOUYFeag7zgAoCiAA)

This happens with both the Babel and TypeScript parsers.

**Input:**
```jsx
// nullish coalescing, logical operators, and boolean operators behave the same
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 ?? 2}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 && 2}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 || 2}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 | 2}`;

// ternary pushes the whole expression to a new line
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 ? 1 : 2}`;
```

**Output:**
```jsx
// nullish coalescing, logical operators, and boolean operators behave the same
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 ??
  2}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 &&
  2}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 ||
  2}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${1 |
  2}`;

// ternary pushes the whole expression to a new line
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${
  1 ? 1 : 2
}`;
```

**Expected behavior:**

I think the non-ternary cases look pretty ugly. I would expect all of these statements to mimic the behaviour of the ternary expression case, yielding this output:

```jsx
// nullish coalescing, logical operators, and boolean operators behave the same
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${
  1 ?? 2
}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${
  1 && 2
}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${
  1 || 2
}`;
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${
  1 | 2
}`;

// ternary pushes the whole expression to a new line
`111111111 222222222 333333333 444444444 555555555 666666666 777777777 ${
  1 ? 1 : 2
}`;
```