A statute can be impermissibly vague for either of two independent reasons.
First, if it fails to provide people of ordinary intelligence a reasonable opportunity to understand what conduct it prohibits.
Second, if it authorizes or even encourages arbitrary and discriminatory enforcement. Chicago v. Morales, 527 U. S. 41, 56-57 (1999).
Above from Hill v Colorado 732

1) A constitutional rule that requires criminal laws to state explicitly and definitely what conduct is punishable. Criminal laws that violate this requirement are said to be void for vagueness. Vagueness doctrine rests on the due process clauses of the Fifth and Fourteenth Amendments of the U.S. Constitution. By requiring fair notice of what is punishable and what is not, vagueness doctrine also helps prevent arbitrary enforcement of the laws. 2) Under vagueness doctrine, a statute is also void for vagueness if a legislature's delegation of authority to judges and/or administrators is so extensive that it would lead to arbitrary prosecutions.