I saw a discussion on a closed Facebook site about hyphenating compounds, and there was considerable variation of views. The use of hyphens is a vexatious matter even for experienced writers, so perhaps I can clarify some points.
The first one: Stop calling it a dash, dammit.
This is a hyphen: -
This is a dash: —
Hyphens join; dashes separate.* Got that?**
A common hyphenated compound follows the pattern adjective-noun noun or adjective-participle noun. Thus first-grade teacher or fresh-faced student.
All the components of a compound are joined with hyphens: a 104-year-old man. But only when the compound precedes a noun; otherwise The man is 104 years old.
English also permits nouns to modify other nouns, and the practice is rampant in business and bureaucratic writing. We do not hyphenate noun noun noun compounds: student loan defaults, class action lawsuit, takeover consolidation synergy, you should pardon the expression.
Some adjective-noun noun compounds have become such stock expressions that it would be odd to hyphenate them. I differed, to my regret, with my late colleague Bill Walsh over the hyphenation of high school student. One would have to be perverse to read the phrase as meaning a school student who is on drugs. Similarly, I don’t see much need to hyphenate civil rights law. This point is a matter of judgment.
We do not conventionally hyphenate adverb adjective noun compounds: really stupid practice.
Are we clear now?
*Journalists in particular are dash-happy, freely using dashes to set off parenthetical information where commas or parentheses would serve as well, or better. With their writing, the dash loses its impact as an indicator of a sudden break in continuity, but they are beyond reform.
**A clarification: The em dash represented above, the width of the letter "m," separates. The en dash, the width of the letter "n," is used to join some compounds, such as ranges of years: John F. Kennedy was president 1961-1963. Unless you are obliged to follow The Chicago Manual of Style, you are probably using the hyphen, as I did in the example, and are unaware of the existence of the en dash.