Files
German-Learning/lessons/0001-v2-word-order.html
2026-06-30 16:59:08 +02:00

263 lines
9.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lesson 1 — V2 Word Order</title>
<link rel="stylesheet" href="../assets/style.css">
</head>
<body>
<div class="page">
<p class="subtitle">Lesson 1 of your German course</p>
<h1>V2 Word Order: The Rule That Fixes 40% of Your Errors</h1>
<p class="subtitle">B1.2 &middot; Grammar &middot; ~15 minutes</p>
<h2>Why this matters</h2>
<p>
German verbs are obsessed with position. In a main clause, the <strong>finite verb always occupies the second slot</strong> — the second grammatical unit, not the second word. This is called the <em>Verb-Second</em> (V2) rule and it affects every sentence you speak or write in German.
</p>
<p>
In English, the subject almost always comes first. German doesn't care. You can put a time expression, a location, a reason, or an adverb in front — but the moment you do, the subject has to step aside and the verb takes slot two.
</p>
<div class="rule-box">
<strong>The Rule</strong>
<div class="formula">[ Front element ] &rarr; VERB &rarr; Subject &rarr; rest of sentence</div>
</div>
<h2>The pattern in your own sentences</h2>
<p>These are the exact constructions you've been writing — and the correction each time:</p>
<table>
<tr>
<th>What you wrote</th>
<th>What it should be</th>
<th>Front element</th>
</tr>
<tr>
<td class="wrong">Heute <em>ich werde</em> Code-Review machen</td>
<td class="right">Heute <em>werde ich</em> Code-Review machen</td>
<td>Heute (time)</td>
</tr>
<tr>
<td class="wrong">Am Freitag <em>ich hat</em> gearbeitet</td>
<td class="right">Am Freitag <em>habe ich</em> gearbeitet</td>
<td>Am Freitag (time)</td>
</tr>
<tr>
<td class="wrong">Danach <em>ich werde</em> weiter</td>
<td class="right">Danach <em>werde ich</em> weiter</td>
<td>Danach (sequence)</td>
</tr>
<tr>
<td class="wrong"><em>Weiss ich nicht</em> was...</td>
<td class="right"><em>Ich weiß</em> nicht, was...</td>
<td>Subject first → no inversion needed</td>
</tr>
</table>
<p>
Notice the last row: when the subject is already in front, there is <em>no inversion</em>. The rule only triggers when something other than the subject occupies slot one.
</p>
<h2>Common front elements that trigger inversion</h2>
<table>
<tr><th>Type</th><th>Examples</th></tr>
<tr><td>Time</td><td><code>Heute, Gestern, Am Freitag, Um 9 Uhr, Letzte Woche</code></td></tr>
<tr><td>Sequence</td><td><code>Dann, Danach, Zuerst, Anschlie&szlig;end, Zuletzt</code></td></tr>
<tr><td>Contrast / addition</td><td><code>Trotzdem, Also, Au&szlig;erdem, Dennoch</code></td></tr>
<tr><td>Reason phrase</td><td><code>Deshalb, Daher, Deswegen</code></td></tr>
<tr><td>Location</td><td><code>In Heitersheim, Im B&uuml;ro, Zu Hause</code></td></tr>
<tr><td>Object moved to front</td><td><code>Das Ticket habe ich gestern geschlossen.</code></td></tr>
</table>
<h2>A trick that never fails</h2>
<p>
After you write a sentence, hold up one finger for the first unit. Ask: <em>is this the verb?</em> If no — your next word <strong>must</strong> be the verb, and the subject comes after it. Count on your fingers if needed. This catches the error every time before it leaves your head.
</p>
<hr style="border:none; border-top: 1px solid #ddd; margin: 2.5rem 0;">
<h2>Drill — choose the correct word order</h2>
<p>All sentences are grounded in your actual life. Eight questions. Immediate feedback after each answer.</p>
<div class="quiz-section" id="quiz"></div>
<div class="score-bar" id="score-bar">
<span class="score-number" id="score-number"></span><span id="score-comment"></span>
</div>
<hr style="border:none; border-top: 1px solid #ddd; margin: 2.5rem 0;">
<h2>Primary source for this lesson</h2>
<p>
<a href="https://git.sometimescode.com/cgsmith/German-for-English-Speakers/src/branch/main/basics/sentence-structure.md" target="_blank">German for English Speakers: Sentence Structure</a> — covers V2, subordinate clause word order, and compound verbs in one page. Then <a href="https://yourdailygerman.com/german-word-order-explained/" target="_blank">Your Daily German: Word Order Explained</a> for deeper coverage (subscription).
</p>
<div class="ask-teacher">
<strong>Ask your teacher:</strong> Anything from this lesson that felt unclear — a sentence that confused you, or a case where you're unsure whether inversion applies — paste it into the chat and ask. The teacher is here to dig into it with you.
</div>
<div class="lesson-nav">
<strong>Related:</strong>
<a href="../reference/word-order.html">Word Order Reference Sheet</a> &middot;
Lesson 2 coming next session
</div>
</div>
<script>
const questions = [
{
prefix: "Heute",
suffix: "einen Code-Review gemacht.",
correct: "habe ich",
distractor: "ich habe",
feedback: "<strong>Heute</strong> is a fronted time element → verb comes second: <em>Heute habe ich …</em>"
},
{
prefix: "Am Freitag",
suffix: "an dem Sprint gearbeitet.",
correct: "habe ich",
distractor: "ich habe",
feedback: "<strong>Am Freitag</strong> is a fronted time phrase → inversion required: <em>Am Freitag habe ich …</em>"
},
{
prefix: "Danach",
suffix: "die E-Mail an Herrn Amann geschrieben.",
correct: "habe ich",
distractor: "ich habe",
feedback: "<strong>Danach</strong> (sequence adverb) triggers inversion: <em>Danach habe ich …</em>"
},
{
prefix: "In Heitersheim",
suffix: "viele schöne Spazierwege.",
correct: "gibt es",
distractor: "es gibt",
feedback: "<strong>In Heitersheim</strong> is a fronted location → verb second: <em>In Heitersheim gibt es …</em>"
},
{
prefix: "Normalerweise",
suffix: "um acht Uhr im Büro.",
correct: "bin ich",
distractor: "ich bin",
feedback: "<strong>Normalerweise</strong> (manner adverb) triggers inversion: <em>Normalerweise bin ich …</em>"
},
{
prefix: "Nach der Schule",
suffix: "oft Hunger.",
correct: "haben die Kinder",
distractor: "die Kinder haben",
feedback: "<strong>Nach der Schule</strong> is fronted → verb must come second, subject after: <em>Nach der Schule haben die Kinder oft Hunger.</em>"
},
{
prefix: "Letzte Woche",
suffix: "das Deployment abgeschlossen.",
correct: "haben wir",
distractor: "wir haben",
feedback: "<strong>Letzte Woche</strong> fronted → verb second: <em>Letzte Woche haben wir das Deployment abgeschlossen.</em>"
},
{
prefix: "Deshalb",
suffix: "dir eine kurze Nachricht.",
correct: "schreibe ich",
distractor: "ich schreibe",
feedback: "<strong>Deshalb</strong> (reason connector) triggers inversion: <em>Deshalb schreibe ich dir eine kurze Nachricht.</em>"
}
];
// Build quiz HTML
const quiz = document.getElementById('quiz');
let answered = 0;
let correct = 0;
const total = questions.length;
// Pre-determined option order: ensures correct answer appears in both positions across the quiz
// true = correct first, false = distractor first
const correctFirst = [true, false, false, true, false, true, false, true];
questions.forEach((q, i) => {
const opts = correctFirst[i]
? [q.correct, q.distractor]
: [q.distractor, q.correct];
const block = document.createElement('div');
block.className = 'question-block';
block.id = 'q' + i;
block.innerHTML = `
<div class="question-text">
<strong>${i + 1}.</strong> &ldquo;${q.prefix} <span class="blank">___________</span> ${q.suffix}&rdquo;
</div>
<div class="options">
${opts.map((opt, j) => `<button class="option-btn" onclick="answer(${i}, '${opt.replace(/'/g, "\\'")}', this)">${opt}</button>`).join('')}
</div>
<div class="feedback" id="fb${i}"></div>
`;
quiz.appendChild(block);
});
function answer(i, chosen, btn) {
const q = questions[i];
const block = document.getElementById('q' + i);
const fb = document.getElementById('fb' + i);
const buttons = block.querySelectorAll('.option-btn');
// Disable all buttons in this block
buttons.forEach(b => b.disabled = true);
const isCorrect = chosen === q.correct;
answered++;
if (isCorrect) {
correct++;
block.classList.add('correct');
btn.classList.add('selected-correct');
fb.className = 'feedback show correct-fb';
fb.innerHTML = '&#10003; Correct. ' + q.feedback;
} else {
block.classList.add('incorrect');
btn.classList.add('selected-incorrect');
fb.className = 'feedback show incorrect-fb';
fb.innerHTML = '&#10007; Not quite. ' + q.feedback;
// Reveal correct answer
buttons.forEach(b => {
if (b.textContent.trim() === q.correct) b.classList.add('reveal-correct');
});
}
if (answered === total) showScore();
}
function showScore() {
const bar = document.getElementById('score-bar');
const num = document.getElementById('score-number');
const comment = document.getElementById('score-comment');
bar.classList.add('show');
num.textContent = correct + ' / ' + total;
if (correct === total) {
comment.textContent = 'Perfect. V2 is clicking. Ready to drill the next pattern.';
} else if (correct >= 6) {
comment.textContent = 'Solid — V2 is mostly there. Review the ones you missed and revisit tomorrow.';
} else if (correct >= 4) {
comment.textContent = 'The pattern is forming. Run this lesson again in 24 hours to consolidate it.';
} else {
comment.textContent = 'Keep the rule visible when you write today. Run this drill again before tomorrow\'s session.';
}
}
</script>
</body>
</html>